Igl*_*gle 7 configuration python-import setup.py python-3.x
我想使用setup.py
从脚本导入的脚本,该脚本是必须安装的包的一部分。该脚本仅包含一个dict
包含用于创建入口点的字符串的 。我没有在 中对它们进行硬编码,setup.py
因为我想稍后从已安装的软件包中再次使用此列表。
只是为了清楚我的目录结构和重要文件:
PackageA
|_package_a
| |_models
| |_modules
| | |_do_query.py
| | |_...
| |_setup_cfg.py
| |_ __init__.py
| |_...
|_ __init__.py
|_setup.py
Run Code Online (Sandbox Code Playgroud)
__init__.py
在package_a
:
from .setup_cfg import setup_config
Run Code Online (Sandbox Code Playgroud)
setup_cfg.py
:
setup_config = {
'scripts': [
'do_query'
]
}
Run Code Online (Sandbox Code Playgroud)
setup.py
:
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
from .package_a import setup_config
with open('README.rst') as f:
readme = f.read()
with open('LICENSE') as f:
license = f.read()
setup(
...,
entry_points={
'console_scripts': ['{}=package_a.modules.{}:main'.format(script, script) for script in setup_config.get('scripts')]
},
)
Run Code Online (Sandbox Code Playgroud)
我可以进行导入from .package_a import setup_config
,并且 pycharm 可以正确解析此导入。但是,如果我尝试通过pip3 install .
它安装包,它会失败ModuleNotFoundError: No module named '__main__.package_a'; '__main__' is not a package
(我们使用pip
而不是因为python setup.py install
我们希望将整个源文件夹安装在站点包中而不是捆绑版本中)
任何人都可以向我解释该异常或提供实现此类配置的正确方法吗?(导入已安装的软件包时,也setup_config.py
必须可以访问 中的字典。setup.py
我遇到了类似的问题,并且也以非常奇怪的方式解决了它,我真的不知道它工作的原因,即使我认为它不应该工作。
我刚刚导入没有相对路径
例如:
from package_a import setup_config
Run Code Online (Sandbox Code Playgroud)
只是删除了相对路径(点删除),它起作用了。pycharm 抛出错误,但在运行时pip3 install .
它起作用了。请告诉我它是否适合您。
归档时间: |
|
查看次数: |
3152 次 |
最近记录: |