【问题标题】:Mixing python imports with git repo?将python导入与git repo混合?
【发布时间】:2013-12-23 20:05:46
【问题描述】:

我在理解如何为我的项目管理此代码时遇到了一些麻烦。由于导入在 python 中的工作方式,我很难为我的所有课程拥有一个 git repo。

目录布局是这样的:

(ASSIGNMENT 3 GIT REPO)
    Project/
        Client/
            Main.py
            ClientHandler.py
            ClientSoundManager.py
        Server/
            Main.py
            ServerHandle.py
            ServerUtil.py
        Shared/
            MathProcessor.py
            DrawHandler.py
            SoundProcessor.py

我有一个 git 项目——“作业 3”。在 python 中,我无法在 ServerHandle.py 中导入 MathProcessor,对于 ClientHandler.py 也是如此。我的另一个选择是为每个创建单独的存储库......并使其看起来像这样--

(ASSIGNMENT 3 GIT REPO)
Project/
    Client/
        Shared/ (SHARED GIT REPO)
            MathProcessor.py
            DrawHandler.py
            SoundProcessor.py
        Main.py
        CLientHandler.py
        ClientSoundManager.py
    Server/
        Shared/ (SHARED GIT REPO)
            MathProcessor.py
            DrawHandler.py
            SoundProcessor.py
        Main.py
        ServerHandle.py
        ServerUtil.py

如果我这样做,那么我将在 GIT 存储库中拥有一个 GIT 存储库...管理这个项目的正确方法是什么,这样 python 导入就不必被入侵?

【问题讨论】:

  • 在 python 中,我无法在 ServerHandle.py 中导入 MathProcessor,对于 ClientHandler.py 也是如此 - 为什么?你遇到了什么错误?你是怎么做的导入/
  • 在 ServerHandle.py 中,如果我执行“从 ..Shared 导入 MathProcessor”,我会得到“尝试在非包中进行相对导入”
  • 那是因为你的目录都不是包。

标签: python git github


【解决方案1】:

这与 git 无关。您只需要拥有/path/to/wherever/you/cloned/Projectsys.path 并在Project/ClientProject/ServerProject/Shared 中添加必要的__init__.py 文件即可制作Python 包。

您可以在此处找到有关导入、sys.path 和包的最相关信息:http://docs.python.org/2/tutorial/modules.html

【讨论】:

  • 这里的一些问题为什么说将它添加到 PATH 是一个糟糕的主意?
  • 这取决于您的操作方式和位置。在库代码中操作sys.path 往往不是一个坏主意。在某些脚本中有时需要它(即在使用 virtualenv 时的 mod_wsgi 脚本中)。添加到您的 PYTHON_PATH 环境变量通常是可以的。
猜你喜欢
  • 2020-03-03
  • 2022-01-17
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2015-11-17
  • 2021-05-02
相关资源
最近更新 更多