Поскольку для 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
Вы можете использовать py2exe , как уже было сказано, и использовать cython , чтобы преобразовать ваши файлы .py
в .pyc
, скомпилированные файлы C, например .dll
в Windows и .so
в Linux, гораздо труднее вернуться, чем обычные файлы .pyo
и .pyc
(а также повысить производительность!) [/ g2]
Использовать 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()
)
py2exe сделает exe-файл, который вы хотите, но вам нужно иметь ту же версию MSVCR90.dll на машине, в которой вы собираетесь использовать свой новый exe. Дополнительную информацию см. В http://www.py2exe.org/index.cgi/Tutorial .
Возможно, вы захотите исследовать Nuitka . Он использует исходный код python и преобразует его в вызовы API C ++. Затем он компилируется в исполняемый двоичный файл (ELF в Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python.
Вы, вероятно, также получите повышение производительности, если будете использовать его. Рекомендуется.
Я хотел бы скомпилировать некоторую полезную информацию о создании автономных файлов в Windows с помощью Python 2.7.
Я использовал py2exe, и он работает, но у меня были некоторые проблемы.
Эта последняя причина заставила меня попробовать PyInstaller http: //www.pyinstaller. org / .
На мой взгляд, это намного лучше, потому что:
Я предлагаю создать файл .bat со следующими строками, например (pyinstaller.exe должен находиться в Пути Windows):
pyinstaller.exe --onefile MyCode.py
Итак, я думаю, что, по крайней мере, для python 2.7, лучшим и простым вариантом является PyInstaller. [/ g1 7]
--onefile
не поможет вам сделать его переносимым в Windows, поскольку исполняемый файл все же хочет связать с библиотекой api-ms-win-crt-runtime-l1-1-0.dll
(или / и другими), которые необходимо установить через пакет vcredist
. Таким образом, зависимость все еще существует и должна быть установлена до запуска.
– Andry
13 July 2017 в 11:13
Использовать Cython для преобразования в c, компиляции и ссылки с gcc. Другим может быть, сделать основные функции в c (те, которые вы хотите сделать сложными для обратного), скомпилировать их и использовать python boost для импорта скомпилированного кода (плюс вы получите гораздо более быстрое выполнение кода). затем используйте любой инструмент, упомянутый для распространения.
Не совсем упаковка кода python, но теперь есть и grumpy из google, который переводит код в Go. Он не поддерживает python C api, поэтому он может не работать для всех проектов.
Да, можно скомпилировать скрипты Python в автономный исполняемый файл.
PyInstaller можно использовать для преобразования программ Python в автономные исполняемые файлы под Windows, Linux, Mac OS X, FreeBSD, Solaris и AIX. Это один из рекомендуемых преобразователей.
py2exe преобразует скрипты Python в исполняемый только в платформе Windows.
Cython является статический компилятор для языка программирования Python и расширенного языка программирования Cython.
Для скриптов Python 3.2 единственным выбором является Cxfreeze. Создайте его из источников, иначе он не сработает.
Для python 2.x я предлагаю pyinstaller, поскольку он может упаковать программу python в один исполняемый файл, в отличие от CxFreeze, который выводит также библиотеки.
Вы можете найти список утилит распространения, перечисленных @ https://wiki.python.org/moin/DistributionUtilities .
Я использую bbfreeze , и он работает очень хорошо (но пока поддержка python 3).
.so
или скопирует файлы .egg напрямую, и все они будут присутствовать в одной директории (или в виде одного файла). Установка не требуется.
– Joe
26 July 2016 в 08:16
И третий вариант - cx_Freeze
, который является кросс-платформенным.
Мне сказали, что PyRun, https://www.egenix.com/products/python/PyRun/ , также является опцией.
Используя 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
в качестве:
О, не забудьте удалить из папки сборки после здание будет экономить на размере.
Вы можете использовать PyInstaller для упаковки программ Python в качестве автономных исполняемых файлов. Он работает на Windows, Linux и Mac.
PyInstaller Quickstart
Установить PyInstaller из PyPI:
pip install pyinstaller
Перейти в каталог вашей программы и run:
pyinstaller yourprogram.py
Это приведет к созданию пучка в подкаталоге, названном
dist
.
cpython
.
– Andry
13 July 2017 в 08:33
вам может понравиться py2exe . вы также найдете там информацию о том, как это сделать на linux
Я также рекомендую pyinstaller для лучшей обратной совместимости, такой как python 2.3 - 2.7. для py2exe у вас должен быть python 2.6