所以我有一个能够分发的项目,它依赖于其他一些可安装的pip模块。这就是setup.py
的样子:
import setuptools
from rss_reader.rss_reader import VERSION
setuptools.setup(name='whatever',
version=VERSION[1:],
description='RSS-feed reader',
long_description='Pure Python command line RSS-feed reader ',
packages=setuptools.find_packages(),
classifiers=["Programming Language :: Python :: 3",
"Operating System :: OS Independent"],
python_requires='>=3.5',
entry_points={'console_scripts': ['rssreader=rss_reader.rss_reader:main']},
install_requires=['bs4',
'feedparser',
'html5lib',
'jsonpickle',
'requests'])
为了确保一切正常,我尝试在Docker容器中安装软件包,pip install .
会导致ModuleNotFound Error
。通过手动安装依赖项,问题得到了解决,所以我很确定install_requires
问题所在。我到底做错了什么?
所以事实证明答案是使用 VERSION 制作另一个文件并准确导入此变量;rss_reader.rss_reader
看起来像这样:
...
from bs4 import BeautifulSoup
...
VERSION='v0.3'
...
因此,它尝试在分配版本之前导入BeautifulSoup,因此在实际安装之前导入BeautifulSoup。