我读了很多与我所问的问题相关的答案,但我仍然不明白如何使我正在尝试的事情成为可能。所以让我们直奔主题。我将报告我的应用程序的简化版本。
现在,集群和解析器包中包含的python脚本应该使用support_class中包含的myclass.py。
我尝试了相对导入,但它们不起作用,因为我希望直接运行集群和解析器包中包含的脚本,并且我不想使用-m选项。
python parser.py[参数]
from ..supportClass import myClass
sys.path.insert(0, "~/project/src")
from support_class import myClass.py
提前谢了。
让我们从项目的文件夹体系结构开始:
MyProject/
└── src
├── clustering
│ ├── __init__.py
│ └── clustering.py
├── parser
│ ├── __init__.py
│ └── parser.py
├── support_class
│ ├── __init__.py
│ └── support.py
└── main.py
如果我没有弄错的话,问题是您希望从parser.py
和clustering.py
中导入support.py
,并能够在需要时独立运行这两个文件。给你两个字:
(还有一个,在找到一个真正的其他解决方案之后;):PythonPath
)
if __name__ == "__main__":
import sys
import os
PACKAGE_PARENT = '..'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))
from support_class.support import Support
else:
from support_class.support import Support
from support_class.support import Support
然后,Python clustering.py
和Python parser.py随心而动!
这使得它成为https://stackoverflow.com/a/16985066/3425488的副本
当我使用相对导入时,我的代码运行正常,但pycharm抱怨。总之。py,导入行用红色下划线,我没有完成。 如果我尝试通过在任何地方添加“app.”来切换到使用绝对导入,pycharm 很高兴,但代码不再运行。我得到:“ModuleNotFoundError:没有名为'app'的模块” 这是我的项目的树形结构。这是我的test_import文件夹的内容: main.py mul.py: sum.py
问题内容: 在有效的去它说,这些类型的进口平均副作用。我已经阅读了几个SO答案,但没有一个解释什么是。有人可以详细说明这个词吗? 问题答案: 当他们说“导入副作用”时,它们实际上是指静态使用的代码/功能。这意味着仅导入软件包将导致一些代码在应用程序启动时执行,从而使我的系统处于与未导入该软件包的状态不同的状态(例如示例中注册处理程序的代码,它也可能放下config文件,修改光盘上的资源等)。有效的
问题内容: 我正在导入许多不同的脚本,因此在文件的顶部,它会被导入语句弄得乱七八糟,即: 有没有办法将所有这些都移动到其他地方,然后我要做的就是导入该文件,所以它只是一个干净的导入? 问题答案: 当然有;只需在主文件所在的目录中创建一个名为的文件,然后将导入文件放置在该目录中即可。然后,您可以简单地在主脚本中使用。
当我使用要求时,我得到引用错误:要求没有定义,当我使用导入/导出时,我得到同步错误:不能在模块外部使用导入语句。 是否可能是因为我试图在连接到超文本标记语言文件的JavaScript文件上使用此命令?因为当我在server.js文件(没有连接到任何超文本标记语言文件)中使用此命令时,我通常可以使用要求。 如果有,我该如何克服这个问题。我得到了与每个超文本标记语言页面连接的JavaScript文件,
问题内容: 如何将winDLL导入python并能够使用其所有功能?它只需要双打和字符串。 问题答案: 您已经标记了问题ctype,所以听起来您已经知道答案了。 该ctypes的教程非常出色。阅读并理解该说明后,您将可以轻松完成。 例如: 还有我自己的代码中的一个示例:
问题内容: 我可能会丢失一些显而易见的东西,但是无论如何: 当您像在python中那样导入软件包时,您可以直接使用任何子模块/子软件包。例如,这有效: 但是我有自己的软件包,其结构如下: 并且这里相同的逻辑不起作用: 我究竟做错了什么? 问题答案: 您需要导入子模块: 您正在寻找的是。您可以通过将(或)放入来解决它,然后Python就能在其中找到。但我建议使用我的第一个建议。