Ita*_*osé 5 python setup.py python-3.x
我做了一个 python 库,这是我的第一个 python 库\n发布在pypl和github上
\n\n该库工作得很好,但 setup() 却不行。
\n\n当我通过安装它时pip install,它会下载 appfly 软件包,但不安装要求:Flask,flask_cors, Flask-SocketIO and jsonmerge。所以我需要自己安装它。\n如果我自己安装依赖项,它工作得很好,但我认为这是使用 python 库的错误方法,对吧?
这是我的setup.py文件,我做错了什么吗?
from setuptools import setup, find_packages\nfrom appfly import __version__ as version\n\nwith open(\'README.md\') as readme_file:\n readme = readme_file.read()\n\n# with open(\'HISTORY.md\') as history_file:\n# history = history_file.read()\n\nrequirements = [\n \'Flask==1.0.2\',\n \'flask_cors==3.0.6\', \n \'Flask-SocketIO==3.0.2\',\n \'jsonmerge==1.5.2\'\n]\n\nsetup(\n author="Italo Jos\xc3\xa9 G. de Oliveira",\n author_email=\'italo.i@live.com\',\n classifiers=[\n \'Natural Language :: English\',\n \'Programming Language :: Python :: 3\',\n \'Programming Language :: Python :: 3.4\',\n \'Programming Language :: Python :: 3.5\',\n \'Programming Language :: Python :: 3.6\',\n \'Programming Language :: Python :: 3.7\',\n ],\n description="This pkg encapsulate the base flask server configurations",\n install_requires=requirements,\n license="MIT license",\n long_description=readme,\n include_package_data=True,\n keywords=\'appfly\',\n name=\'appfly\',\n packages=find_packages(),\n url=\'https://github.com/italojs/appfly\',\n version=version,\n zip_safe=False,\n)\nRun Code Online (Sandbox Code Playgroud)\n
小智 2
出现此错误的原因是setup.py从包中导入。这意味着 python 将在处理时尝试导入库setup.py(即在安装任何依赖项之前)。
由于您只是导入包来获取版本信息,因此可以用其他方法替换此导入。
执行此操作的一个简单方法是将版本信息直接包含在 中setup.py,但这样做的缺点是版本不再是单一来源的。
其他方法涉及一些工作,但允许版本信息继续是单一来源的。有关建议,请参阅https://packaging.python.org/guides/single-commerce-package-version/ 。该页面有一个选项列表,其中一些选项可能比其他选项更适合您的软件包设置。我个人更喜欢方案3:
将值设置为
__version__项目中专用模块中的全局变量(例如 version.py),然后让 setup.py 读取该值并将其执行到变量中。...
使用执行:
Run Code Online (Sandbox Code Playgroud)version = {} with open("...sample/version.py") as fp: exec(fp.read(), version) # later on we use: version['__version__']
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |