![](/img/trans.png)
[英]Python2.7 subprocess32: how to share environment between two scripts executed via Popen?
[英]Dependency management: subprocess32 needed for Python2.7
我有一個庫( SUBX ),這取決於subprocess32 。 subprocess32庫是Python2.7的后端,提供超時kwarg。
我的圖書館需要超時kwarg。
只有目標平台是Python2.x時我才需要subprocess32。
我該如何在項目中定義依賴項?
我收到此錯誤消息,如果我通過“install_requires”(setup.py)定義與subprocess32
的依賴關系,我在python3 virtualenv內:
===> pip install -e git+https://github.com/guettli/subx.git#egg=subx
Obtaining subx from git+https://github.com/guettli/subx.git#egg=subx
Cloning https://github.com/guettli/subx.git to ./src/subx
Collecting subprocess32 (from subx)
Using cached subprocess32-3.2.7.tar.gz
Complete output from command python setup.py egg_info:
This backport is for Python 2.x only.
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-lju3nl1y/subprocess32/
有一種聲明性的方式,但是它需要一個或多或少的最新版本的setuptools
(如果我正確閱讀發行說明 ,你至少需要20.2版本)。 您將在下面看到的內容稱為環境標記,並在PEP 508中指定,閱讀它以獲取可用標記的完整列表,並在需要時更好地理解標記語法。
對於python版本,讓我們以您的包為例:您應該在python2.X
環境中安裝subprocess32
依賴項。 像這樣增強你的依賴:
install_requires=[
'subprocess32; python_version<"3"',
]
現在使用python2.7
安裝軟件包subx
產生:
Processing ./dist/subx-2017.8.0-py2-none-any.whl
Collecting subprocess32; python_version < "3" (from subx==2017.8.0)
Installing collected packages: subprocess32, subx
Successfully installed subprocess32-3.2.7 subx-2017.8.0
如果你用python3.X
安裝它,輸出將是:
Processing ./dist/subx-2017.8.0-py3-none-any.whl
Installing collected packages: subx
Successfully installed subx-2017.8.0
請注意,將跳過subprocess32
的安裝。
另一個常見的例子是聲明特定於平台的依賴性:我有一個要求項目auditwheel
要在Linux上安裝和delocate
在MacOS。 我聲明這樣的依賴:
install_requires=[
...
'auditwheel==1.7.0; "linux" in sys_platform',
'delocate==0.7.1; "darwin" == sys_platform',
]
請注意,如果您沒有專門針對任何主要的python版本,則需要對Linux進行此檢查,因為:
$ python2 -c "import sys; print sys.platform"
linux2
但
$ python3 -c "import sys; print sys.platform"
linux
因此,如果您的包僅適用於python2.X
,則可以使用檢查"linux2" == sys.platform
。 這將使您的依賴項僅可以使用python2.X
進行安裝。
import sys
kw = {}
if sys.version_info[0] == 2:
kw['install_requires'] = ['subprocess32']
setup(
…
**kw
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.