Wil*_*dia 5 python python-import python-3.x
我仍在尝试掌握 python 3,但遇到了一个问题,我可以将 .py 文件作为脚本运行,也可以将其作为模块导入,但不能同时运行两者。
目录结构
test/
__init__.py
test.py
subwayclock/
__init__.py
subwayclock.py
build/
gen/
__init__.py
gtfs_realtime_pb2.py
nyct_subway_pb2.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
在这种情况下 test.py 看起来像这样并且可以工作(rawFEED()是subwayclock.subwayclock中的一个函数):
from subwayclock.subwayclock import *
print(rawFEED())
Run Code Online (Sandbox Code Playgroud)
但是,我无法直接运行脚本,即
python subwayclock/subwayclock.py
Run Code Online (Sandbox Code Playgroud)
因为它给出了以下错误:
Traceback (most recent call last):
File "subwayclock.py", line 32, in <module>
from .build.gen.gtfs_realtime_pb2 import FeedMessage
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)
但是,如果我修改 Subwayclock/subwayclock.py 中的导入语句以声明(即删除前导“.”):
from subwayclock.subwayclock import FeedMessage
Run Code Online (Sandbox Code Playgroud)
我可以直接通过命令行运行substituteclock.py脚本,完美调用main函数。
但是,当我运行原始 test.py 文件时,导入语句不再起作用,并且出现以下错误:
Traceback (most recent call last):
File "test.py", line 1, in <module>
from subwayclock.subwayclock import *
File "/var/www/test/subwayclock/subwayclock.py", line 32, in <module>
from build.gen.gtfs_realtime_pb2 import FeedMessage
ImportError: No module named 'build'
Run Code Online (Sandbox Code Playgroud)
我可以使这个脚本独立运行和导入吗?
归档时间: |
|
查看次数: |
4294 次 |
最近记录: |