我正在使用一个点子。 目录结构:
scenario
scenario
parser
__init__.py
__init__.py
runner.py
父初学
__all__ = ['run_scenario', 'parse_scenario_json', 'play_scenario']
from scenario.runner import run_scenario
from scenario.parser import parse_scenario_json
from scenario.player import play_scenario
runner.py
中的
# -*- coding: utf-8 -*-
from scenario.parser import parse_scenario_json
从pycharm运行 [![在此处输入图像说明] [1]] [1]
作品。
从终端开始运行
(scenario) /Volumes/Development/scenario (master) python2 scenario/__main__.py -v5 -t 10.0 -f html ../04-04.out ~/Downloads/01-calc-grades-average11.json
Traceback (most recent call last):
File "scenario/__main__.py", line 10, in <module>
from scenario.runner import run_scenario
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/scenario/__init__.py", line 3, in <module>
from scenario.runner import run_scenario
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/scenario/runner.py", line 3, in <module>
from scenario.parser import parse_scenario_json
ImportError: No module named parse
两者都来自同一个virtualenv
和相同的python版本2.7.13
由于这是一个点子,我甚至试图使用已安装的点子
运行pip install git+https://github.com/shlomihod/scenario.git --upgrade
scenario -v5 -t 10.0 -f html ../../CEC-INGInious-Courses/07-2-C_Programming_2-TEMPLATE/PTBS/04-04.out ~/Downloads/01-calc-grades-average11.json
获得此输出
Traceback (most recent call last):
File "/Users/ohadperry/.virtualenvs/scenario/bin/scenario", line 9, in <module>
load_entry_point('scenario==2.0.0', 'console_scripts', 'scenario')()
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/pkg_resources/__init__.py", line 474, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2582, in load_entry_point
return ep.load()
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2265, in load
return self._load()
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2268, in _load
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/scenario/__init__.py", line 3, in <module>
from scenario.runner import run_scenario
File "/Users/ohadperry/.virtualenvs/scenario/lib/python2.7/site-packages/scenario/runner.py", line 3, in <module>
from scenario.parser import parse_scenario_json
ImportError: No module named parser
你如何调试这个?
[1]: https://i.stack.imgur.com/zPAbo.png
答案 0 :(得分:1)
它可以是Python的版本和lib的版本。如果使用pip安装lib,则必须使用python 2.7,但如果使用pip3安装了库,则必须使用python 3。
检查版本!这种情况已经发生在我身上。
答案 1 :(得分:0)
如果你试图制作python包并安装它,那么包目录结构应该是这样的
funniest/
funniest/
__init__.py
module1.py
module2.py
module3.py
setup.py
正如你所看到的,父级最有趣的目录是唯一的简单目录,而不是python包。而最有趣的子目录是Python包。
注意:将目录定义为Python包,在目录中定义 init .py
中的详细信息当你为Python包定义一个目录时,你可以在另一个python模块中导入python目录中定义的所有模块
__all _
的目的__ all_在模块中定义
在任何Python模块中定义 __ all _ 时,您可以导入 仅在 __ all _
中定义了函数,变量或类
示例:在模块a.py
中__all__ = ['var1','method1']
var1 = 10
var2 = 20
def method1():
pass
def temp1():
pass
在其他模块中导入a.py时,只能导入 var1 或 method1 ,无法导入 var2 或 temp1
因为您没有在 __ all _ 列表中定义
from a import *
print var1 # run without error
method1() # run without error
print var2 # show error
temp1() # show error
定义 all_ in __init .py of python package
如果在Python包的__init_.py中定义__all_,则只能导入__all_ list中定义的模块或模块变量
从上面定义目录结构
in chield funniest __init_.py
__all__ = ['module1', 'module2']
现在你可以从最有趣的Python包导入module1和module2,如果你尝试导入module3,它将显示错误。
For more detail __all_ in package
中定义__all_
__all__ = ['run_scenario', 'parse_scenario_json', 'play_scenario']
现在您只能导入run_scenario,parse_scenario_json play_scenario
如果您尝试导入另一个模块或模块变量.function,则显示错误
有用的链接:
答案 2 :(得分:0)
解决方案是安装包文件
to
在那里添加了丢失的包装