Вопрос по module, python, compilation, dll – Как скомпилировать пакет Python в DLL

17

Ну, у меня есть пакет Python. Мне нужно скомпилировать его как DLL, прежде чем распространять его способом, легко импортируемым.How? Вы можете предложить*.pyc, Но я читаю где нибудь*.pyc может быть легко декомпилирован!

Update: Следуйте этим:
1) я написал пакет на python
2) хочу раздать
3) НЕ хочу распространять исходники
4) * .pyc является декомпилируемым & gt; & gt; Источник может быть извлечен!
5) dll является стандартным

Весь ваш ответ уже дан в вопросе! DLL не декомпилируется в исходный код по сравнению с * .pyc, верно? Developer
Все .pyc - это скрипт на python, скомпилированный в байт-код, чтобы он быстрее загружался в интерпретатор. Это не исполняемый файл. Зачем вам пакет python & quot; скомпилированный как dll & quot ;? Joel Cornett

Ваш Ответ

8   ответов
9

pyd, Это как можно ближе к созданию скомпилированного кода на Python.

Кроме того, dll не является стандартом, не в мире Python. Они также не переносимы.

использование чего-то вроде py2exe не усложнит обратный инжиниринг, чем просто доставка файла .pyc
Но DLL являются стандартными в мире Windows.
Вопрос на засыпку! Я знаю, что там есть трудности. О, черт возьми, мне нужно просто не доставлять источник. Как сделать!? Я знаю, * .pyc просто готов к импорту, без головной боли. Я могу себе представить, как тяжело будет длл, сейчас. Developer
Знаете ли вы, как использовать DLL из Python?
Вы знаете, у меня есть модуль, написанный на Python. Если я импортирую его в другой скрипт, будет * .pyc. Так что все просто, однако люди могут конвертировать * .pyc в исходный код, который я не хочу им разрешать. Переписать модуль в Cython не должно быть легкой задачей, я прав? Кстати, в Windows dll является жестким стандартом, мой клиент использует только Windows. Developer
2

Я бы также использовалCython чтобы генерироватьpyd файлы, как Dikei написал. Но если вы действительно хотите защитить свой код, вам лучше написать важные вещи на C ++. Лучше всего было бы объединить обаC++ а такжеPython, Идея: вы оставили бы код Python открытым для корректировок, чтобы вам не приходилось компилировать все снова и снова. Это означает, что вы бы написали «ядро» в C ++ (который является самым безопасным решением в наши дни) и использовать те,dll файлы в вашем коде Python. Это действительно зависит от того, какой инструмент или программу вы создаете и как вы хотите его выполнить. Я создаю в основном исполняемый файл (exe,app), когда я закончу инструмент или программу, но это больше для конечного пользователя. Это может быть сделано сpy2exe а такжеpy2app (оба совместимы с 64 битами). Если вы реализуете интерпретатор, на компьютере конечного пользователя не обязательно устанавливать Python в системе.

A pyd file is the same like a dll and fully supported inside python. So you can normally import your module. You can find more information about it here.

Использование и генерацияpyd Файлы - это самый быстрый и простой способ создания безопасного и переносимого кода Python.

Вы также можете написать реальныйdll файлы вC ++ и импортировать их сctypes использовать их (здесь хорошийсообщение а здесьописание питона как это работает)

1

pyinstaller для преобразования файлов .py в исполняемый файл со всеми необходимыми пакетами в формат .dll.

Шаг 1. pip установить pyinstaller,

Шаг 2. Новый файл Python, назовите его code.py.

Шаг 3. Напишите несколько строк кода, то есть напечатайте (& quot; Hello World & quot;)

Шаг 4. Откройте командную строку в том же месте и напишите pyinstaller code.py, нажмите Enter. Последний шаг увидеть в том же месте две папки с именем build, dist будет создан. внутри папки dist находится код папки, и внутри этой папки есть исполняемый файл code.exe вместе с необходимыми файлами .dll.

Это создает EXE не DLL, DLL используются для запуска EXE
Step 1. pip install pyinstaller, step 2. новый файл Python, назовите егоcode.py . step 3. Напишите несколько строк кода, т.е.print("Hello World") step 4. Откройте командную строку в том же месте и напишитеpyinstaller code.py нажмите ввод.Last Step увидеть в том же месте имя двух папокbuild, dist будет создан. внутри папки dist есть папкаcode и внутри этой папки есть исполняемый файлcode.exe вместе с необходимыми файлами .dll.
интересно - можете ли вы предоставить код, чтобы показать, как это делается?
3

Встраивание Python поддерживается в CFFI версии 1.5Вы можете создать.dll файл, который может использоваться приложением Windows C.

5

вставлять питона внутри C, Настоящий трюк заключается в преобразовании значений C и значений Python. Как только вы это сделаете, создание DLLдовольно просто.

Однако зачем вам делать dll? Вам нужно использовать это из не-Python программы?

Эта идея, первая часть, не выглядит легкой. Есть ли приложение, которое автоматически встраивает мой модуль Python и дает мне импортируемую DLL? Developer
Ну, я имел в виду от Python. Developer
Учитывая в вопросе: 1) DLL является переносимым, 2) исходный код не распространяется. Developer
Что вы подразумеваете под "импортируемым"? Dll? Импортируемый откуда? C ++? Python? INTERCAL?
1

You must be on Windows for DLLs to work, they are not portable.

However the code below is cross platform and all platforms support run-times so this can be re-compiled for each platform you need it to work on.

Python (пока) не предоставляет простой инструмент для создания DLL, однако вы можете сделать это на C / C ++

Для начала вам понадобится компилятор (в Windows его нет по умолчанию), а именно Cygwin, MinGW или Visual Studio.

Базовые знания C также необходимы (так как мы будем кодировать в основном на C).

You will also need to include the necessary headers, I will skip this so it does not become horribly long, and will assume everything is set up correctly.

Для этой демонстрации я напечатаю традиционный привет мир:

Python code we will be converting to a DLL:

def foo(): print("hello world")

C code:

#include "Python.h" // Includes everything to use the Python-C API

int foo(void); // Declare foo

int foo(void) { // Name of our function in our DLL

    Py_Initialize(); // Initialise Python

    PyRun_SimpleString("print('hello world')"); // Run the Python commands

    return 0; // Finish execution
}

Здесьруководство для встраивания Python. Здесь следует добавить несколько дополнительных вещей, но для краткости я их не учел.

Скомпилируйте его, и у вас должна быть DLL. :)

Это еще не все. Вам нужно будет распространять все необходимые зависимости, это будет означатьpython36.dll время выполнения и некоторые другие компоненты для запуска скрипта Python.

My C coding is not perfect, so if anyone can spot any improvements please comment and I will do my best to fix the it.

Это также может быть возможно в C # из этого ответаКак мне вызвать конкретный метод из скрипта Python в C #?, поскольку C # может создавать библиотеки DLL, и вы можете вызывать функции Python из C #.

5

py2exe.org конвертировать скрипты Python в исполняемые файлы Windows. Конечно, это будет работать только на окнах, но лучше, чем ничего.

Из пакета я имею в виду пакет (модуль), который означает, что я могу распространять некоторые коды Python, но для некоторых модулей я хочу распространять только dll-файлы. Developer
EXE-файлы, к сожалению, не являются DLL, это разные вещи. В C / C ++ DLL-файлах кодирования не хватаетmain() функция
Я думаю, что ваша идея стоит попробовать. Спасибо Developer
Я могу ошибаться, так что не цитируйте меня по этому поводу, но файлы .exe можно использовать как модуль dll. поэтому используйте py2exe для создания .exe, а затем просто переименуйте его в .dll, чтобы ваши пользователи не пытались «запустить» quot; упаковка.
-1

Захватить Visual Studio Express и IronPython и сделать это таким образом? Вы будете в мире Python 2.7.6.

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