假設我有一個像一堆要求文件:解決Python的依賴關係基礎上的翻譯版本
requirements.txt # common for both 2.x and 3.x
requirements-2.txt # 2.x
requirements-3.txt # 3.x
,我想根據當前填充install_requires
論點setup.py
文件Python解釋器版本。當然假設點處理安裝過程。
解決方案1:當然,我可以編寫一個簡單的函數來讀取並返回正確的需求。在有多個項目的情況下,這顯然是不可接受的,因爲我將不得不復制到任何地方的功能。
解決方案2:這裏接下來的想法是寫一個簡單的包,它會爲我,但問題是,它應該是不僅可在分配的時間(如python setup.py sdist
),但更重要的是,在安裝時在一臺機器上。
我被設法編寫一個簡單的模塊來完成這件事,我們稱它爲depmodule
。我也有以下setup.py
:
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
try:
from depmodule import find_requirements
except ImportError:
# this line is executed when reading setup.py for the first time
# since depmodule is not installed yet
find_requirements = lambda: []
setup(
name='some-package',
packages=find_packages(),
# snip...
platforms='any',
# note that depmodule is listed here as a requirement, so it will be
# installed before some-package, thus will be available when it comes
# to running setup.py of some-package
install_requires=['depmodule'] + find_requirements(),
)
當談到pip install some-package
它實際上正確的解決依賴,但它們不是由PIP回升,所以它只能安裝:depmodule some-package
(按順序),而不是depmodule dep1 dep2 ... some-package
。
我試圖用setup_requires
的說法,但沒有運氣。下載依賴項,但我無法訪問它,因爲它是一個蛋包(未提取)。
有什麼辦法可以解決這個問題嗎?有沒有其他方法可以幫助解決這個問題?
謝謝!