конвертировать файл сценария python в двоичный файл в операционной системе Linux [duplicate]

Поскольку для For Each нет обратного цикла, вам нужно использовать несколько иной подход.

Кроме того, ваш код с несколькими If s и OR «кричит для использования Select Case.

Dim StatusRange As Range
Dim i As Long

Set StatusRange = Range("B2", Range("B2").End(xlDown))

' loop backward when deleting Ranges, Rows, Cells
For i = StatusRange.Rows.Count To 1 Step -1
    Select Case StatusRange(i, 1).Value
        Case "FG", "QC", "CS"
            StatusRange(i, 1).EntireRow.Delete
        Case Else ' for the future if you need it

    End Select
Next i
475
задан ThinkingStiff 10 March 2013 в 03:50
поделиться

16 ответов

Вы можете использовать py2exe , как уже было сказано, и использовать cython , чтобы преобразовать ваши файлы .py в .pyc, скомпилированные файлы C, например .dll в Windows и .so в Linux, гораздо труднее вернуться, чем обычные файлы .pyo и .pyc (а также повысить производительность!) [/ ​​g2]

163
ответ дан Ian Spence 22 August 2018 в 07:39
поделиться
  • 1
    Спасибо за ответ. Я рассмотрел Cython, но, похоже, Python по-прежнему нуждается в выполнении скомпилированного исполняемого файла. Вы имеете в виду компиляцию скрипта на .pyc с помощью Cython? (Я не знал, имеет ли Cython такую ​​особенность) – Jeff 28 March 2011 в 13:18
  • 2
    Я имею в виду, что у вас есть две проблемы : закрытый источник и дескрипторы. Для закрытого источника компилируйте свой важный код в C libs с помощью Cython. Для no-deps используйте py2exe и создайте исполняемый файл с .pyd (cython compiled) файлами внутри. – neurino 28 March 2011 в 13:24
  • 3
    Что бы вы сделали с библиотеками (numpy, scipy, matplotlib)? Например, как клиенты смогут использовать функцию ginput () в matplotlib из исполняемого файла, не устанавливая его на свой компьютер. – chimpsarehungry 10 April 2013 в 19:04
  • 4
    @chimpsarehungry о статической привязке? – Braden Best 28 January 2015 в 08:15
  • 5
    Последний выпуск, похоже, в 2008 году, это все еще поддерживается? – Zitrax 17 September 2015 в 08:45

Использовать py2exe .... использовать ниже настроенные файлы:

 from distutils.core import setup
 import py2exe

 from distutils.filelist import findall
 import matplotlib

 setup(
       console=['PlotMemInfo.py'],

       options={
                'py2exe': {
                'packages' : ['matplotlib'],
            'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                 'libgobject-2.0-0.dll',
                 'libgdk_pixbuf-2.0-0.dll']
                          }
                },
       data_files = matplotlib.get_py2exe_datafiles()
     )
13
ответ дан Anand 22 August 2018 в 07:39
поделиться
  • 1
    Я сделал это, и он создал файл python27.dll, и он по-прежнему требуется. Я перенес файл .exe из папки, содержащей файл python27.dll, и файл .exe больше не запускается. – mjwrazor 16 August 2016 в 14:58
  • 2
    Как только вы выйдете из папки, это не сработает. – Jesh Kundem 14 November 2016 в 16:04

py2exe сделает exe-файл, который вы хотите, но вам нужно иметь ту же версию MSVCR90.dll на машине, в которой вы собираетесь использовать свой новый exe. Дополнительную информацию см. В http://www.py2exe.org/index.cgi/Tutorial .

6
ответ дан Belial 22 August 2018 в 07:39
поделиться

Возможно, вы захотите исследовать Nuitka . Он использует исходный код python и преобразует его в вызовы API C ++. Затем он компилируется в исполняемый двоичный файл (ELF в Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python.

Вы, вероятно, также получите повышение производительности, если будете использовать его. Рекомендуется.

61
ответ дан cdarke 22 August 2018 в 07:39
поделиться
  • 1
    Nuitka - отличный инструмент. Не нужно его использовать. Я бы выделил только одно: это не ограничивается только Linux - это кросс-платформенная - еще одна причина, по которой ее использовать. – sjaustirni 20 November 2014 в 17:09
  • 2
    Nuitka работает на Python 2.6, 2.7, 3.2, 3.3 и 3.4 и является кросс-платформенным: (Linux, FreeBSD, NetBSD, MacOS X и Windows (32/64 бит), другие могут работать. Архитектура: x86, x86_64 (amd64) и arm. Другие архитектуры также могут работать, из коробки.) – Jonathan Hartley 15 March 2015 в 02:33
  • 3
    Он не поддерживается для последних 3,6 .. и является кошмаром для установки на окнах – Tetora 30 October 2017 в 08:04
  • 4
    Работает как очарование на macOS High Sierra + Python 3.5.2. Спасибо! – Anthony L. 26 December 2017 в 06:59

Я хотел бы скомпилировать некоторую полезную информацию о создании автономных файлов в Windows с помощью Python 2.7.

Я использовал py2exe, и он работает, но у меня были некоторые проблемы.

  • Он обнаружил некоторые проблемы для создания отдельных файлов в 64-битных бит Windows: Использование bundle_files = 1 с py2exe не работает ;
  • Необходимо создать файл setup.py чтобы он работал. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
  • У меня были проблемы с зависимостями, которые вам нужно решить, импортируя пакеты в установочный файл ;
  • Мне не удалось заставить его работать вместе с PyQt ..

Эта последняя причина заставила меня попробовать PyInstaller http: //www.pyinstaller. org / .

На мой взгляд, это намного лучше, потому что:

  • Это проще в использовании.

Я предлагаю создать файл .bat со следующими строками, например (pyinstaller.exe должен находиться в Пути Windows):

pyinstaller.exe --onefile MyCode.py

Итак, я думаю, что, по крайней мере, для python 2.7, лучшим и простым вариантом является PyInstaller. [/ g1 7]

19
ответ дан cricket_007 22 August 2018 в 07:39
поделиться
  • 1
    Флаг --onefile не поможет вам сделать его переносимым в Windows, поскольку исполняемый файл все же хочет связать с библиотекой api-ms-win-crt-runtime-l1-1-0.dll (или / и другими), которые необходимо установить через пакет vcredist. Таким образом, зависимость все еще существует и должна быть установлена ​​до запуска. – Andry 13 July 2017 в 11:13

Использовать Cython для преобразования в c, компиляции и ссылки с gcc. Другим может быть, сделать основные функции в c (те, которые вы хотите сделать сложными для обратного), скомпилировать их и использовать python boost для импорта скомпилированного кода (плюс вы получите гораздо более быстрое выполнение кода). затем используйте любой инструмент, упомянутый для распространения.

2
ответ дан F.Moure 22 August 2018 в 07:39
поделиться

Не совсем упаковка кода python, но теперь есть и grumpy из google, который переводит код в Go. Он не поддерживает python C api, поэтому он может не работать для всех проектов.

4
ответ дан freeformz 22 August 2018 в 07:39
поделиться

Да, можно скомпилировать скрипты Python в автономный исполняемый файл.

PyInstaller можно использовать для преобразования программ Python в автономные исполняемые файлы под Windows, Linux, Mac OS X, FreeBSD, Solaris и AIX. Это один из рекомендуемых преобразователей.

py2exe преобразует скрипты Python в исполняемый только в платформе Windows.

Cython является статический компилятор для языка программирования Python и расширенного языка программирования Cython.

18
ответ дан fury.slay 22 August 2018 в 07:39
поделиться
  • 1
    Спасибо за это. Я использовал py2exe, и я не мог заставить иконки работать с ним вообще. PyInstaller работал в первый раз, и отлично выглядит! – Chud37 11 May 2017 в 07:24

Для скриптов Python 3.2 единственным выбором является Cxfreeze. Создайте его из источников, иначе он не сработает.

Для python 2.x я предлагаю pyinstaller, поскольку он может упаковать программу python в один исполняемый файл, в отличие от CxFreeze, который выводит также библиотеки.

8
ответ дан Gabber 22 August 2018 в 07:39
поделиться

Вы можете найти список утилит распространения, перечисленных @ https://wiki.python.org/moin/DistributionUtilities .

Я использую bbfreeze , и он работает очень хорошо (но пока поддержка python 3).

5
ответ дан Joe 22 August 2018 в 07:39
поделиться
  • 1
    stackoverflow.com/questions/33683133/… Я использую bbfreeze очень хороший пакет. – user914425 2 December 2015 в 20:59
  • 2
    Заботится ли о зависимостях и устанавливает соответствующие модули py? – Volatil3 9 May 2016 в 17:20
  • 3
    @ Volatil3 Да, все зависимости заботятся. WRT для установки модулей на хост-системе - существуют различные виды компиляции. Bbfreeze скомпилирует все в несколько файлов .so или скопирует файлы .egg напрямую, и все они будут присутствовать в одной директории (или в виде одного файла). Установка не требуется. – Joe 26 July 2016 в 08:16

И третий вариант - cx_Freeze , который является кросс-платформенным.

20
ответ дан Katriel 22 August 2018 в 07:39
поделиться

Мне сказали, что PyRun, https://www.egenix.com/products/python/PyRun/ , также является опцией.

1
ответ дан Kraig Brockschmidt - MSFT 22 August 2018 в 07:39
поделиться

Используя pyinstaller, я нашел лучший метод, используя ярлык для .exe, а не создание --onefile. В любом случае, возможно, есть некоторые файлы данных, и если вы используете приложение на основе сайта, ваша программа зависит от файлов html, js, css. Нет смысла перемещать все эти файлы где-то .. вместо этого, если мы переместим рабочий путь вверх.

Сделайте ярлык для exe, переместите его вверху и установите целевые и начальные пути, как указано, чтобы относительные пути переместились в dist \ folder: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" Можно переименовать ярлык на все, что переименовано в «GTFS-Manager». Теперь, когда я дважды щелкаю ярлык, это как если бы я python-запускал файл! Я нашел этот подход лучше, чем --onefile в качестве:

  1. В случае одного файла существует проблема с отсутствием .dll для win7 OS, которая требует предварительной установки и т. Д. Yawn. С обычной сборкой с несколькими файлами таких проблем нет.
  2. Все файлы, которые использует мой скрипт python (он развертывает веб-сервер торнадо и нуждается в большом количестве файлов на сайте!) Не нужно никуда перемещать: я просто создаю ярлык вверху.
  3. Я могу использовать эту ту же самую папку в ubuntu (запустите python3 myfile.py) и окна (дважды щелкните ярлык).
  4. Мне не нужно беспокоиться о чрезмерно сложном взломе файла .spec, чтобы включить файлы данных и т. д.

О, не забудьте удалить из папки сборки после здание будет экономить на размере.

1
ответ дан nikhilvj 22 August 2018 в 07:39
поделиться

Вы можете использовать PyInstaller для упаковки программ Python в качестве автономных исполняемых файлов. Он работает на Windows, Linux и Mac.

PyInstaller Quickstart

Установить PyInstaller из PyPI:

pip install pyinstaller

Перейти в каталог вашей программы и run:

pyinstaller yourprogram.py

Это приведет к созданию пучка в подкаталоге, названном dist.

Более подробное руководство по обходу см. в руководстве .

136
ответ дан Steven Vascellaro 22 August 2018 в 07:39
поделиться
  • 1
    Стоит отметить, что pyinstaller может скомпилировать один файл .exe. Кроме того, на какой ОС она выполняется, делает , что исполняемый файл, то есть .exe при запуске в Windows – Richard de Wit 6 June 2014 в 15:17
  • 2
    @ ItayMoav-Malimovka Они работают в поддержке Python 3. См. github.com/pyinstaller/pyinstaller/tree/python3 . – PhoneixS 13 January 2015 в 09:21
  • 3
    использование «pyinstaller» намного проще, чем «py2exe». Он заботится обо всех зависимостях, включая numpy, pandas, что угодно и дает вам один исполняемый файл на рабочей платформе! – aks 9 March 2016 в 06:00
  • 4
    Кажется, именно то, что я искал. И теперь поддерживает Python 3! Благодаря :) – Daniel Gruszczyk 30 August 2016 в 08:23
  • 5
    Я попробовал их все, PyInstaller и другие (py2exe, freeze, cython, встроенная версия python и т. Д.) До сих пор не могут обрабатывать зависимость самой динамической библиотеки python по крайней мере в Windows (python * .dll). У dll зависит от времени выполнения, которое должно быть установлено отдельно. После процесса вы получаете исполняемый файл, который будет связан с dll, и, следовательно, имеет такую ​​же уязвимость. Таким образом, ваш «автономный» исполняемый файл не является полностью автономным, а скорее встраиваемым. Чтобы обойти зависимость времени выполнения, вам нужно перестроить питон из источника с помощью проекта cpython. – Andry 13 July 2017 в 08:33

вам может понравиться py2exe . вы также найдете там информацию о том, как это сделать на linux

17
ответ дан user237419 22 August 2018 в 07:39
поделиться
  • 1
    Но вам нужно будет предоставить ему пакет всех вариантов. – Jakob Bowyer 28 March 2011 в 12:37

Я также рекомендую pyinstaller для лучшей обратной совместимости, такой как python 2.3 - 2.7. для py2exe у вас должен быть python 2.6

9
ответ дан yantaq 22 August 2018 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: