我的项目具有以下结构:
project/
+ setup.py
+ bobafett/
+ __init__.py
+ __main__.py
+ foo.py
与:
__init__.py
:一个空文件foo.py
:包含bar
的定义:def bar():
print("foo.bar()")
__main__.py
导入和使用{import foo
foo.bar()
~/project $ python3 bobafett/__main__.py
foo.bar()
bobafett
被打包、发布和安装,就再也找不到foo
~/project $ python3 setup.py bdist_wheel
~/project $ curl -T ... https://my-pypi.example.com/simple/bobafett/...
~/project $ cd /tmp
/tmp $ pip --index-url https://my-pypi.example.com/simple --user bobafett
/tmp $ python -m bobafett
...
File "/home/ysc/.local/lib/python3.6/site-packages/bobafett/__main__.py", line 1, in <module>
import foo
ModuleNotFoundError: No module named 'foo'
怎么样?我可以写什么来代替import foo
既可以在本地工作又可以在部署后工作?我需要改变我的项目结构吗
setup.py
:
from setuptools import setup
setup(
name='bobafett',
version='1.0.0',
author='YSC',
author_email='ysc@example.com',
packages=['bobafett'],
url='https:///my-pypi.example.com/simple/bobafett/',
description='Prints "foo.bar()".',
)
您可以执行以下操作:
import foo
更改为from . import foo
。它将修复正在运行的python -m bobafett
,但会中断python3 bobafett/__main__.py
李>python -m bobafett
而不是python3 bobafett/__main__.py
李>相关问题 更多 >
编程相关推荐