2016-10-20 7 views
0

Я могу сделать яйцо python с помощью setuptools: python setup.py bdist_egg. Теоретически я должен сделать это для каждого установленного пакета с файлом setup.py. Можно ли инкапсулировать всю виртуальную среду python virtualenv в яйцо питона?Могу ли я сделать virtualenv в яйце

+0

Что такое файловая структура макет вашего проекта? –

ответ

1

Вы не должны делать это по нескольким причинам

Даже если вы могли бы управлять, чтобы сделать это, он не будет работать, как и следовало ожидать. Если у пользователя уже установлен один из пакетов внутри вашего яйца, они будут сталкиваться, потому что яйца python не добавляют дополнительных пространств имен.

Кроме того, яйца-питоны наход тс на своем пути. Если вы хотите создать двоичный дистрибутив, вы должны использовать новый python wheels.

Если у вас есть проект с зависимостями, просто объявите эти зависимости в своем setup.py, и pip обработает их установку. Если у вас есть некоторые зависимости, которые не существуют в PyPi, или вам нужна очень конкретная версия пакета, просто включите эти пакеты в качестве подпакета в своем пакете.

/my_package 
    __init__.py 
    /libs 
     __init__.py 
     /non_pypi_package 
     /legacy_package 

И тогда в вашем коде, вместо того, чтобы импортировать их как

import non_pypy_package 

вы бы использовать

from my_package.libs import non_pypi_package 
+0

Как я использую яйца Я могу сохранить скомпилированный пакет C/Fortran, который является зависимостью пакета python. Есть ли способ, которым я все еще могу это сделать? – kilojoules

+0

Вы можете сделать это, используя параметр ['package_data'] (https://docs.python.org/2/distutils/setupscript.html#installing-package-data) функции' setup'. Если вы предоставите более подробную информацию о том, как структурирован ваш проект, я могу добавить точные команды для их включения. –

+0

Я не уверен, как я могу использовать package_data в том, как вы описываете. Этот предыдущий ответ был не столь обнадеживающим: http://stackoverflow.com/a/14159430/3474956. Не похоже, что существует какой-либо современный эквивалент яйцам питона. – kilojoules