我在創建的應用程序中嵌入python,並且正在尋找一種方便的方式來分發Python代碼。我最近閱讀了大約zipimport
,並認爲這將是一種方便的方式來分發我所有的Python代碼,而不是包含完全展開的樹。所以,我同樣設置了我的包,這樣的:使用distutils製作一個適合zipimport的包
.
├── setup.py
└── testpack
├── __init__.py
└── pack1
├── foo.py
└── __init__.py
其中setup.py
樣子:
from distutils.core import setup
setup(
name='testpack',
author='FatalError',
version='1.0',
packages=['testpack.pack1']
)
,然後我跑python setup.py bdist --format=zip
。但後來當我看到的zip的內容:
$ unzip -l testpack-1.0.linux-x86_64.zip
Archive: testpack-1.0.linux-x86_64.zip
Length Date Time Name
--------- ---------- ----- ----
183 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack-1.0.egg-info
152 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.pyc
181 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.pyc
0 2013-03-13 10:41 usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.py
33 2013-03-13 10:41 usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.py
--------- -------
549 5 files
顯然,結果是(不那麼令人驚訝的)不適合與zipimport
使用。相反,這是一個zip解壓縮檔案,其目的是在/
解壓縮以安裝該軟件包。
有沒有什麼辦法讓distutils
(或setuptools
等)代替構建軟件包,以便它可以與zipimport
一起使用?由於我擁有的代碼實際上是特定於應用程序的,因此它不屬於安裝到系統庫中。
我意識到我可以自己編寫腳本,但是,那麼有趣的是什麼?例如,我想確保一切都是預編譯的,我的軟件包包含一個不打算分發的單元測試包。所以,我希望這些工具中的一種可以爲我做到這一點。
這是否假設'setuptools'? 「雞蛋」對我來說聽起來不錯,但我不認爲'distutils'能夠讓它們成爲現實。 – FatalError 2013-03-13 15:13:55
如果我從'setuptools'中導入'setup',可以工作。 – FatalError 2013-03-13 15:26:50