我有一個項目,我想從中生成兩個獨立的python包。我想用pip安裝這些軟件包。使用多個setup.py腳本的多個項目?
在回答這個前面的問題,一般的建議是寫兩個setup.py
腳本:Multiple projects from one setup.py?
所以,我想是這樣的結構:
/myproject
setup_foo.py
setup_bar.py
/mypackage1
/mypackage2
...
在setup_foo.py
我設置script_name
參數:
from distutils.core import setup
setup(name = 'foo',
version = '2.0.0',
...,
script_name = 'setup_foo.py')
(我也嘗試了下面沒有參數 - 根據th出入口文件默認爲sys.argv中[0])
我使用
python setup_foo.py sdist
創建foo-2.0.0.tar.gz
但是,當我pip install foo-2.0.0.tar.gz
,我得到這樣一個錯誤:
Unpacking .../foo-2.0.0.tar.gz
Running setup.py egg_info for package from file:///...foo-2.0.0.tar.gz
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory:
'/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'
我錯過了一些指導pip
使用setup_foo.py
的方法?還是應該將兩個名爲'setup.py'的腳本放在不同的目錄中?
感謝您的回答!你選擇我所說的結構的理由幾乎是正確的;我有兩個人。首先,我使用PyDev/Eclipse,並希望儘可能避免項目間依賴關係。其次,我的兩個發行版共享項目中幾乎所有的包 - 它們主要區別於包含哪些命令行工具 - 因此將它們分成兩個或三個單獨的項目似乎有點過分。如果一個項目中的兩個發行版以錯誤的方式磨損setuptools,我可能會選擇只有一個發行版,並接受在所有服務器上部署所有腳本。 – 2012-01-17 21:08:49
請參閱http://code.google.com/p/pyroscope/source/browse/trunk/update-to-head.sh獲取一些靈感。如果您安裝到virtualenv(即使是在生產機器上也是一個好主意),您可以選擇性地對工具存根進行符號鏈接,從而發佈選定的子集(請參閱「ln -nfs $(grep -l'entry_point。* pyrocore =='$ PWD/bin/*)$ {BIN_DIR: - 〜/ bin} /「命令)。 – pyroscope 2012-01-18 22:13:58
聰明!是的,這是一個更簡單的方法來隱藏/發佈sripts子集。 – 2012-01-20 15:59:16