我遇到了2个主要问题,当我将所有脚本都放在一个目录TwitterAnalyzer
中时一切正常,但是当我开始清理时。发生了一些问题。
我必须将 TwitterApi 导入到Analyzer
模块中。我找到了解决方案,但对我来说却很愚蠢(if __name__ == '__main__'
)。否则,导入将无法在父模块_run_GUI_mode.py
我还尝试制作一些__init__.py
文件,该文件可以同时导入这两种东西,但无法正常工作
NameError: name 'TwitterApi' is not defined
如何正确导入,这将使我能够独立运行Analyzer
。
我对此主题不完全理解,可能会有答案:Why does importing a python module not import nested modules?
我应该将所有脚本移回同一目录吗?我将避免对tweets
目录进行路径跟踪的其他工作。分析器正在后台下载推文。
# My Project Tree
.TwitterAnalyzer
|---LICENSE
|---README.md
|---TwitterAnalyzer
|---Analyzer
|---Analyzer.py
|---Readme.md
|---secret_token.txt
|---TwitterApi.py
|---__init__.py
|---GUI
|---create_gui_py.py
|---GUI.py
|---GUI_QT.ui
|---tweets
|---_run_GUI_mode.py
# Analyzer\TwitterAnalyzer.py
# Grzegorz Krug
if __name__ == '__main__': # this is my solution, but I do not like it
from TwitterApi import TwitterApi, TwitterLoginFailed
else:
from Analyzer.TwitterApi import TwitterApi, TwitterLoginFailed
class TwitterAnalyzer(TwitterApi):
def __init__(self, autologin=True, log_ui=None):
...
# _run_GUI_mode.py
# Grzegorz Krug
from Analyzer.TwitterApi import TwitterApi, TwitterLoginFailed # <-- This does not work anyway
from Analyzer.Analyzer import TwitterAnalyzer
from GUI.GUI import Ui_MainWindow
class TwitterAnalyzerGUI(TwitterAnalyzer, Ui_MainWindow):
def __init__(self, mainWindow):
...
# Analyzer/__init__.py
from TwitterApi import TwitterApi
from Analyzer import TwitterAnalyzer
答案 0 :(得分:2)
将__init__.py
添加到TwitterAnalyzer目录