Можно ли запустить программу на Python на компьютере без Python? А как насчет C / C ++?
Могу ли я создать программу на Python, отправить ее на удаленный компьютер и запустить ее там без того компьютера, на котором установлен Python? Я слышал, что вы не можете, поскольку Python нужно интерпретировать. Если это правда, то это кажется очень странным, так как было бы сложно распределить вашу программу, если все не решат установить Python.
Кроме того, что относительно C и С++? Могут ли они запускаться на удаленном компьютере без установки языка? (Я думаю, вы можете, так как это скомпилированный язык).
Я не совсем уверен и хотел бы уточнить.
Я получаю несколько смешанных ответов на это, и я не уверен, куда идти. Я вижу, что я могу включить библиотеку Python в программу, и я могу использовать py2exe.
Однако я запутался в C и С++. Должен ли я включать их библиотеки в программу? Могут ли они работать только на определенных машинах? Предоставляет ли компилятор его запуск на всех машинах?
7 ответов
python интерпретируется, поэтому он не будет работать без python. Однако это не означает, что должен быть установлен python, вы можете включить копию в каталог своей программы или даже связать свою программу и среду выполнения python с одним файлом.
C и С++ создают машинный код (в большинстве случаев C-интерпретаторы существуют, как и C и С++ → p-code и байт-коды). Но большинство программ на C и С++ используют разделяемые библиотеки и не будут запускаться, если не присутствует общая библиотека (опять же, ее не нужно устанавливать, можно поместить в каталог программы). Также обычно есть опция сборки (статическая привязка) для включения всех необходимых библиотек в основной файл программы.
Но результат по-прежнему ограничен конкретной комбинацией архитектуры ОС и ЦП. Для запуска программы на более чем одной платформе всегда требуется поддержка времени выполнения платформы.
Посмотрите на py2exe и py2app для Windows и Mac. Однако Mac OS OSX и самые современные Linuces имеют Python.
Приложения C/С++ обычно скомпилируются для исполняемых файлов, которые работают на одной архитектуре машины/ОС (например, 32-разрядная Windows или 64-разрядная OSX); такой исполняемый файл может работать на некоторых, но не на всех машинах. Например, 64-битные Windows или OSX могут запускать программы, созданные либо для 32-битного, либо 64-битного вкуса их соответствующих ОС.
Я дам практическое применение отправки кода на удаленную машину для запуска. Обычно это делается в проекте BOINC, инициативе сообщества GRID, которая выпускает такие драгоценные камни, как SETI @Home. Обычно приложениями являются скомпилированные версии С++ с многоплатформенными двоичными файлами для x86-linux, AMD64-linux, win32, win64 и универсальных бинарных файлов Mac OS (с ppc, x86 и 64-разрядными). Это очень много для распространения, но современная система make может легко автоматизировать все это (например, CMake).
Многие люди предпочитают метод WORA (пишите один раз в любом месте) и придерживайтесь языка на основе VM, такого как Java или Python. В этом случае проекты boinc распространяют версию VM, а также код для запуска на нем. Java VM, обремененная проблемами лицензирования, Python VM намного приятнее. Boinc пытается внедрить Python VM в различные клиенты BOINC, чтобы упростить распространение приложений GRID на основе Python.
Надеюсь, это даст вам представление о распределении приложений и поможет принять обоснованное решение.
Если вы написали программу на любом языке, и эта программа не скомпилирована для машинного кода, то на компьютере пользователя необходимо преобразовать его в машинный код до его запуска.
В случае JavaScript это «что-то» часто является веб-браузером. В случае Python, который часто является автономным интерпретатором, хотя его можно скомпилировать:
Однако, чтобы быть ясным: просто потому, что ваша программа не скомпилирована в код imachine, не означает, что она будет интерпретироваться. Программы, написанные на С#, обычно скомпилированы в MSIL, который скомпилирован в машинный код при первом запуске программы. Java-программы также скомпилируются при первом запуске.
Вы можете использовать py2exe для распространения программ Python в Windows.
Существует py2exe , который может создать исполняемый файл, который будет запускаться на другом компьютере без этого пользователя, устанавливающего обычный пакет Python.
Да, C и С++ (как минимум, нормально) реализованы как компиляторы, которые могут создавать автономные исполняемые файлы.
Изменить: в типичном случае реализация C или С++ свяжет функции из стандартной библиотеки, которые используются в программе, в исполняемый файл. Это может (и часто делает) включать совсем немного, которое не используется напрямую, но по-прежнему не включает в себя (где угодно близко) всю стандартную библиотеку.
В большинстве случаев вы также можете создать исполняемый файл, который зависит от реализации стандартной библиотеки, уже присутствующей на целевой машине в виде общей библиотеки, DLL и т.д. (разные ОС используют разные имена). Это уменьшает размер исполняемого файла, но увеличивает головные боли, связанные с распределением; Я использую его для кода, который я компилирую на своей собственной машине, но обычно избегаю его, когда/если я распространяю исполняемый файл кому-либо еще. Учитывая текущие цены на жесткий диск, экономия дискового пространства редко стоит головной боли.
Посмотрите на Pyinstaller для автономных исполняемых файлов без необходимости интеграции с python. Ну, кроме критических библиотек, чтобы он мог работать!
Он недавно обновил, усовершенствовал и даже поддерживает интеграцию cython, хотя это может стать сложным. Вы можете сжать файлы, которые будут меньше, или если у вас есть несколько исполняемых файлов, вы можете связать их с одним файлом, чтобы уменьшить размер.
Вы также можете создать единый исполняемый файл с установленным python. Не используйте anaconda, хотя (используйте по умолчанию python 3.6), чтобы ваша программа была очень маленькой по размеру.
Python-сообщество
Написал пару прог: крестики-нолики, морской бой, летающий мячик. Что с ними нужно сделать, чтоб они запускались на компе на котором не установлен ПИтон. Логика такая : человек, которьій буде пользоваться моей прогой может вообще не знать, что такое Питон, ему по барабану на каком язьіке написана прога.
Отредактировано Kaura (Фев. 6, 2021 18:36:43)
Прикреплённый файлы:
main.py (1,8 KБ)
#2 Фев. 6, 2021 19:17:47
Как запустить прогу написанную на Питоне без установленного Питона
cx_Freeze
хз почему при закрытии вылазит ошибка
(хотя это же происходит и при простом запуске вашего скрипта)
запуск exe.win-amd64-3.7\main.exe
архив
1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде 
2. чтобы вставить изображение залейте его куда нибудь (например) , нажмите
и вставьте ссылку на его url
…
есчщо
Отредактировано AD0DE412 (Фев. 6, 2021 19:41:20)
#3 Фев. 6, 2021 23:55:00
Как запустить прогу написанную на Питоне без установленного Питона
Если совсем коротко то никак не запустить. Питон либо ставится либо просто кладется рядом с вашим поделием при распространении.
Цикл распространения программ известен. Делаете дистрибутив. Чел ставит программу, играется тыча во чтото запускаемое и потом удаляет если надоело.
Другое дело что нормальный дистрибутив иногда сложнее сделать чем саму прогу, поскольку питоновские скрипты потенциально запускабельны под множеством разных операционных систем…
А вы помоему неправильно советуете. Человек не говорил что у него винда.
Другое дело что под OSx и Linux этот вопрос для простых скриптов вообще не возникает, поскольку они запускаются ничуть не хуже чем любые другие исполняемые модули
#4 Фев. 7, 2021 13:08:39
Как запустить прогу написанную на Питоне без установленного Питона
Kaura эту тему поднимают тут с завидной регулярность.
http://python.su/forum/topic/38353/?page=1
почитайте, может найдете для себя чтото полезное.
Отредактировано PEHDOM (Фев. 7, 2021 13:21:33)
#5 Фев. 7, 2021 15:40:32
Как запустить прогу написанную на Питоне без установленного Питона
С ними ни чего не нужно делать.У вас это файл с расширением “.py”.Соответственно на компьютере у вас есть программа которая умеет читать файл с этим расширением,в данном случае это Python.
аналогия такая,есть файл.mp3,чтобы его воспроизвести у вас должен быть установлен проигрыватель который умеет его читать.Вы же не скачиваете каждую песню вместе с проигрывателем,иначе у вас будут песни и куча проигрывателей.
для начала думаю ровным счетом ничего,если хотите показать кому-то свое творение,говорите ему что нужна программа для его воспроизведения(интерпретатор).Если ваша программа представляет какую-то ценность для него,он установит интерпретатор,если нет то увы…Допустим у меня есть python, я скачал ваш файл,клацнул на него и он запустился…Я его увидел…Profit
второй вариант теоретический
пишется некий сценарий(понятно что не на pythone),который делает следующее
-проверяет есть ли в ОС нужный Pyhton:
если нет:
*сценарий автоматического скачивания с оф.сайта
*сценарий автоматической установки
* сценарий который еще какой,нужен
иначе:
-проверяет есть ли нужные частные библиотеки
если нет:
*скачивает устанавливает
-устанавливает основной скрипт
-сценарий как (кассета вставляется в мафон)python будет читать скрипт
-ярлык по которому клацает пользователь
-сценарий если что-то пошло не так(описание ошибки)
Running python script without python installed on pc
I created some data processing scripts and they need to be executed on daily bases , but the number of PCs are nearly 150 and i cant manually Python install on all of them.
So i need a way to get these working on those Windows systems, i tried PyInstaller to create exe and placed it on server but the script execution is taking a lot of time in initial phase (program execution is the same but takes time to load with a blinking cursor) maybe it’s the load of the dependencies , file is nearly 36 MB.
Is there a possible way to execute that .py file in an environment without python installed or creating a python environment and setting up paths variables using a .bat script in the host PC? What other options do I have without asking everyone to manually install anything? I heard that docker can be used in such case but working in a local environment should I deploy such a thing?
Python on Windows FAQ¶
How do I run a Python program under Windows?¶
This is not necessarily a straightforward question. If you are already familiar with running programs from the Windows command line then everything will seem obvious; otherwise, you might need a little more guidance.
Unless you use some sort of integrated development environment, you will end up typing Windows commands into what is referred to as a “Command prompt window”. Usually you can create such a window from your search bar by searching for cmd . You should be able to recognize when you have started such a window because you will see a Windows “command prompt”, which usually looks like this:
The letter may be different, and there might be other things after it, so you might just as easily see something like:
depending on how your computer has been set up and what else you have recently done with it. Once you have started such a window, you are well on the way to running Python programs.
You need to realize that your Python scripts have to be processed by another program called the Python interpreter. The interpreter reads your script, compiles it into bytecodes, and then executes the bytecodes to run your program. So, how do you arrange for the interpreter to handle your Python?
First, you need to make sure that your command window recognises the word “py” as an instruction to start the interpreter. If you have opened a command window, you should try entering the command py and hitting return:
You should then see something like:
You have started the interpreter in “interactive mode”. That means you can enter Python statements or expressions interactively and have them executed or evaluated while you wait. This is one of Python’s strongest features. Check it by entering a few expressions of your choice and seeing the results:
Many people use the interactive mode as a convenient yet highly programmable calculator. When you want to end your interactive Python session, call the exit() function or hold the Ctrl key down while you enter a Z , then hit the “ Enter ” key to get back to your Windows command prompt.
You may also find that you have a Start-menu entry such as Start ‣ Programs ‣ Python 3.x ‣ Python (command line) that results in you seeing the >>> prompt in a new window. If so, the window will disappear after you call the exit() function or enter the Ctrl — Z character; Windows is running a single “python” command in the window, and closes it when you terminate the interpreter.
Now that we know the py command is recognized, you can give your Python script to it. You’ll have to give either an absolute or a relative path to the Python script. Let’s say your Python script is located in your desktop and is named hello.py , and your command prompt is nicely opened in your home directory so you’re seeing something similar to:
So now you’ll ask the py command to give your script to Python by typing py followed by your script path:
How do I make Python scripts executable?¶
On Windows, the standard Python installer already associates the .py extension with a file type (Python.File) and gives that file type an open command that runs the interpreter ( D:\Program Files\Python\python.exe "%1" %* ). This is enough to make scripts executable from the command prompt as ‘foo.py’. If you’d rather be able to execute the script by simple typing ‘foo’ with no extension you need to add .py to the PATHEXT environment variable.
Why does Python sometimes take so long to start?¶
Usually Python starts very quickly on Windows, but occasionally there are bug reports that Python suddenly begins to take a long time to start up. This is made even more puzzling because Python will work fine on other Windows systems which appear to be configured identically.
The problem may be caused by a misconfiguration of virus checking software on the problem machine. Some virus scanners have been known to introduce startup overhead of two orders of magnitude when the scanner is configured to monitor all reads from the filesystem. Try checking the configuration of virus scanning software on your systems to ensure that they are indeed configured identically. McAfee, when configured to scan all file system read activity, is a particular offender.
How do I make an executable from a Python script?¶
See How can I create a stand-alone binary from a Python script? for a list of tools that can be used to make executables.
Is a *.pyd file the same as a DLL?¶
Yes, .pyd files are dll’s, but there are a few differences. If you have a DLL named foo.pyd , then it must have a function PyInit_foo() . You can then write Python “import foo”, and Python will search for foo.pyd (as well as foo.py, foo.pyc) and if it finds it, will attempt to call PyInit_foo() to initialize it. You do not link your .exe with foo.lib, as that would cause Windows to require the DLL to be present.
Note that the search path for foo.pyd is PYTHONPATH, not the same as the path that Windows uses to search for foo.dll. Also, foo.pyd need not be present to run your program, whereas if you linked your program with a dll, the dll is required. Of course, foo.pyd is required if you want to say import foo . In a DLL, linkage is declared in the source code with __declspec(dllexport) . In a .pyd, linkage is defined in a list of available functions.
How can I embed Python into a Windows application?¶
Embedding the Python interpreter in a Windows app can be summarized as follows:
Do not build Python into your .exe file directly. On Windows, Python must be a DLL to handle importing modules that are themselves DLL’s. (This is the first key undocumented fact.) Instead, link to python NN .dll ; it is typically installed in C:\Windows\System . NN is the Python version, a number such as “33” for Python 3.3.
You can link to Python in two different ways. Load-time linking means linking against python NN .lib , while run-time linking means linking against python NN .dll . (General note: python NN .lib is the so-called “import lib” corresponding to python NN .dll . It merely defines symbols for the linker.)
Run-time linking greatly simplifies link options; everything happens at run time. Your code must load python NN .dll using the Windows LoadLibraryEx() routine. The code must also use access routines and data in python NN .dll (that is, Python’s C API’s) using pointers obtained by the Windows GetProcAddress() routine. Macros can make using these pointers transparent to any C code that calls routines in Python’s C API.
If you use SWIG, it is easy to create a Python “extension module” that will make the app’s data and methods available to Python. SWIG will handle just about all the grungy details for you. The result is C code that you link into your .exe file (!) You do not have to create a DLL file, and this also simplifies linking.
SWIG will create an init function (a C function) whose name depends on the name of the extension module. For example, if the name of the module is leo, the init function will be called initleo(). If you use SWIG shadow classes, as you should, the init function will be called initleoc(). This initializes a mostly hidden helper class used by the shadow class.
The reason you can link the C code in step 2 into your .exe file is that calling the initialization function is equivalent to importing the module into Python! (This is the second key undocumented fact.)
In short, you can use the following code to initialize the Python interpreter with your extension module.
There are two problems with Python’s C API which will become apparent if you use a compiler other than MSVC, the compiler used to build pythonNN.dll.
Problem 1: The so-called “Very High Level” functions that take FILE * arguments will not work in a multi-compiler environment because each compiler’s notion of a struct FILE will be different. From an implementation standpoint these are very low level functions.
Problem 2: SWIG generates the following code when generating wrappers to void functions:
Alas, Py_None is a macro that expands to a reference to a complex data structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will fail in a mult-compiler environment. Replace such code by:
It may be possible to use SWIG’s %typemap command to make the change automatically, though I have not been able to get this to work (I’m a complete SWIG newbie).
Using a Python shell script to put up a Python interpreter window from inside your Windows app is not a good idea; the resulting window will be independent of your app’s windowing system. Rather, you (or the wxPythonWindow class) should create a “native” interpreter window. It is easy to connect that window to the Python interpreter. You can redirect Python’s i/o to _any_ object that supports read and write, so all you need is a Python object (defined in your extension module) that contains read() and write() methods.
How do I keep editors from inserting tabs into my Python source?¶
The FAQ does not recommend using tabs, and the Python style guide, PEP 8, recommends 4 spaces for distributed Python code; this is also the Emacs python-mode default.
Under any editor, mixing tabs and spaces is a bad idea. MSVC is no different in this respect, and is easily configured to use spaces: Take Tools ‣ Options ‣ Tabs , and for file type “Default” set “Tab size” and “Indent size” to 4, and select the “Insert spaces” radio button.
Python raises IndentationError or TabError if mixed tabs and spaces are causing problems in leading whitespace. You may also run the tabnanny module to check a directory tree in batch mode.
How do I check for a keypress without blocking?¶
Use the msvcrt module. This is a standard Windows-specific extension module. It defines a function kbhit() which checks whether a keyboard hit is present, and getch() which gets one character without echoing it.
How do I solve the missing api-ms-win-crt-runtime-l1-1-0.dll error?¶
This can occur on Python 3.5 and later when using Windows 8.1 or earlier without all updates having been installed. First ensure your operating system is supported and is up to date, and if that does not resolve the issue, visit the Microsoft support page for guidance on manually installing the C Runtime update.