2016-10-20 15 views
0

我可以用setuptools製作一個python蛋:python setup.py bdist_egg。理論上,我應該可以爲每個安裝的軟件包使用setup.py文件。是否有可能將整個virtualenv虛擬python環境封裝到python蛋中?我可以製作一個virtualenv成雞蛋

+0

你是什麼項目的文件結構佈局? –

回答

1

你不應該有以下幾個原因

即使你可以設法做到這一點,因爲你希望它是行不通的做到這一點。如果用戶已經安裝了其中的一個包,那麼它們會發生衝突,因爲python的蛋不會添加額外的名稱空間。

此外,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