【问题标题】:Use functions/classes from another directory使用另一个目录中的函数/类
【发布时间】:2019-02-24 17:55:44
【问题描述】:

如果这很重要,我正在运行 WindowsAnacondaPyCharm

我的目录如下:

\MyMainDirectory
    \FunctionsLibrary
         ClassA.py
         ClassB.py
         functionA.py
         functionB.py
    \Project A
        main.py
    \Project B
        main.py

如何使用此目录设置,例如functionA.pyClassA.py 等在我的文件中 e.g. \Project A\main.py, \Project B\main.py 等?

我想在我的单独项目“项目 A”和“项目 B”中使用一些常用函数和类。

请注意,“Project A”和“Project B”是 PyCharm 中的两个不同的项目。

感谢任何帮助!

【问题讨论】:

  • 如果您在“Project A\main.py”中包含这些文件,您不能使用它们吗?
  • 包含文件夹中的文件?理想情况下,如果我必须编辑例如functionA.py 然后我需要在几个文件夹中编辑它。
  • 此设置是否仅限于 pycharm,或者您打算在生产中的某个地方使用它?
  • 它将在生产中,但可能以编译的方式,还不确定。你为什么要问? :)

标签: python windows python-3.x pycharm anaconda


【解决方案1】:

您可以使用 'sys' 包含路径

# In your main.py
import sys
sys.path.append("../FunctionsLibrary")
import ClassA
import ClassB

【讨论】:

  • 这似乎解决了问题,谢谢!但是当悬停在代码中的“import ClassA”上方时,PyCharm 抱怨:“没有名为 ClassA 的模块”,即使我可以使用 ClassA。这是为什么呢?
  • 为了回答你的问题,我需要更多的东西。您的代码的一部分,错误消息的完整句子。
  • 这将是完整的错误消息:“没有名为 ClassDatabase 的模块少... (Ctrl+F1) 检查信息:此检查检测到应该解析但没有解析的名称。由于动态调度和鸭子打字,这在有限但有用的情况下是可能的。顶级和类级项目比实例项目得到更好的支持。"
  • @user1455613,像这样包含。
  • @RafaelVidal 那么你的意思是什么,代码是一样的?仍然是同样的“问题”。谢谢。
【解决方案2】:

我想我找到了最好的解决方案(至少对于我的应用程序,但也可能对于其他人),即创建一个由不同项目使用的类或函数集的包(模块)。

然后只需安装您构建的包(模块)。我只是按照本指南进行操作,效果很好。

https://packaging.python.org/tutorials/packaging-projects/

请注意:您不必将代码上传到 github,也可以只拥有您的软件包的离线版本。

干杯!

【讨论】:

    【解决方案3】:

    您可以像这样设置环境变量 PYTHONPATH:

    export PYTHONPATH=/path/to/FunctionsLibrary:/path/to/Project\ A
    

    之后这个python也会在这个目录中搜索。

    如果您使用 virtualenv,您可以将此导出放置到“激活”文件中,或者您可以使用 PyCharm 设置环境变量(参见设置)。 我更喜欢使用“激活”文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多