从今天开始,我有一个有趣的问题。几个月来一切都工作正常,今天我想像往常一样启动程序,在导入过程中就退出了。没有错误或没有任何错误。我尝试过控制台和pycharm,但是结果是一样的。看来问题在init.py内部,但是在从项目导入期间。
类的导入如下:
from engine.database import Database
如果我尝试直接使用database.py中的Database类,它会起作用。发生了什么变化,我正在使用python 3.6?
在引擎目录中,我有这样的init.py:
# Database imports
from engine.database import Database
# Tor imports
from projects.Common.tor_network import TorBuild
from projects.Common.tor_network import Check
from projects.Common.tor_network import kill_all
如果我评论从项目中导入的内容,则可以正常工作。
因为从项目中导入无效。这是其他init.py文件
项目中的init.py看起来像这样:
from projects.Common import *
以及内部项目/ Common init.py如下:
from os import listdir
from os.path import abspath, dirname, isfile, join
# get location of __init__.py
init_path = abspath(__file__)
# get folder name of __init__.py
init_dir = dirname(init_path)
# get all python files
py_files = [file_name.replace(".py", "") for file_name in listdir(init_dir) \
if isfile(join(init_dir, file_name)) and ".py" in file_name and not ".pyc" in file_name]
# remove this __init__ file from the list
py_files.remove("__init__")
__all__ = py_files
因此,问题的根源位于projects / Commoninit.py。
如果我仅用__all__ = ['tor_network']
替换该代码,它将起作用。但这意味着每次添加程序时我都必须手动安装。那真的很有趣。我现在为飞蛾工作了。
好,我发现了问题... Common中的一个程序是运行功能(稍后我忘记评论),该功能在运行后退出。我忘了那个。
感谢帮助!