Как скомпилировать пакет Python в DLL

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

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

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

Ответы на вопрос(8)

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

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

 15 июн. 2015 г., 08:31
использование чего-то вроде py2exe не усложнит обратный инжиниринг, чем просто доставка файла .pyc
 01 мар. 2018 г., 02:37
Но DLL являются стандартными в мире Windows.
 Developer04 июн. 2012 г., 13:05
Вопрос на засыпку! Я знаю, что там есть трудности. О, черт возьми, мне нужно просто не доставлять источник. Как сделать!? Я знаю, * .pyc просто готов к импорту, без головной боли. Я могу себе представить, как тяжело будет длл, сейчас.
 04 июн. 2012 г., 07:01
Знаете ли вы, как использовать DLL из Python?
 Developer03 июн. 2012 г., 14:21
Вы знаете, у меня есть модуль, написанный на Python. Если я импортирую его в другой скрипт, будет * .pyc. Так что все просто, однако люди могут конвертировать * .pyc в исходный код, который я не хочу им разрешать. Переписать модуль в Cython не должно быть легкой задачей, я прав? Кстати, в Windows dll является жестким стандартом, мой клиент использует только Windows.

Я бы также использовал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 использовать их (здесь хорошийсообщение а здесьописание питона как это работает)

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.

 04 мар. 2019 г., 10:26
Это создает EXE не DLL, DLL используются для запуска EXE
 22 мая 2018 г., 14:50
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.
 18 мая 2018 г., 22:59
интересно - можете ли вы предоставить код, чтобы показать, как это делается?

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

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

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

 Developer03 июн. 2012 г., 14:25
Эта идея, первая часть, не выглядит легкой. Есть ли приложение, которое автоматически встраивает мой модуль Python и дает мне импортируемую DLL?
 Developer04 июн. 2012 г., 13:01
Ну, я имел в виду от Python.
 Developer02 июн. 2012 г., 11:12
Учитывая в вопросе: 1) DLL является переносимым, 2) исходный код не распространяется.
 04 июн. 2012 г., 19:25
 03 июн. 2012 г., 20:00
Что вы подразумеваете под "импортируемым"? Dll? Импортируемый откуда? C ++? Python? INTERCAL?

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 #.

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

 Developer02 июн. 2012 г., 11:18
Из пакета я имею в виду пакет (модуль), который означает, что я могу распространять некоторые коды Python, но для некоторых модулей я хочу распространять только dll-файлы.
 04 мар. 2019 г., 10:28
EXE-файлы, к сожалению, не являются DLL, это разные вещи. В C / C ++ DLL-файлах кодирования не хватаетmain() функция
 Developer03 июн. 2012 г., 14:16
Я думаю, что ваша идея стоит попробовать. Спасибо
 02 июн. 2012 г., 17:40
Я могу ошибаться, так что не цитируйте меня по этому поводу, но файлы .exe можно использовать как модуль dll. поэтому используйте py2exe для создания .exe, а затем просто переименуйте его в .dll, чтобы ваши пользователи не пытались «запустить» quot; упаковка.

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

Ваш ответ на вопрос