Python文件夹结构的项目目录和简易imp

2024-06-06 22:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的团队在python3中有一个包含几个小项目的文件夹。其中,我们有一个实用文件夹,其中有几个实用功能,在整个项目中使用。但是进口的方式很不舒服。这是我们使用的结构:

temp_projects
    util
        storage.py
        geometry.py
    project1
        project1.py
    project2
        project2.py

问题是项目中的导入看起来很糟糕:

^{pr2}$

而且,pycharm和其他工具在理解和提供完成方面都遇到了困难。在

有没有更简洁的方法?在

编辑: 所有的项目和实用工具都在进行中,并且经常被修改,所以我正在寻找一些尽可能灵活和舒适的东西


Tags: 项目py文件夹util方式storage团队结构
3条回答

使用importlib。在

import importlib, importlib.util

def module_from_file(module_name, file_path):
    spec = importlib.util.spec_from_file_location(module_name, file_path)
    module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(module)
    return module

geometry = module_from_file("geometry", "../temp_projects/utils/geometry.py")

geometry.rotate_coordinates(...)

我相信正确的路线和你现在所做的完全不同。每个项目应存储在不同的Git存储库中,共享模块应添加为git submodules。一旦这些项目变得更大、更复杂(他们可能也会),就更容易单独管理它们。在

简而言之

项目结构应:

Project_1
  |- utils <submodule>
       |- storage.py
       |- geometry.py
  |- main.py

Project_2
  |- utils <submodule>
       |- storage.py
       |- geometry.py
  |- main.py

使用子模块

^{pr2}$

进一步阅读https://git-scm.com/book/en/v2/Git-Tools-Submodules

PYTHONPATH环境变量可能是一种方法。只需将其设置为项目文件夹位置:

PYTHONPATH=/somepath/temp_projects

您将能够使用util,如下所示:

^{pr2}$

PyCharm也会自动识别这一点。在

相关问题 更多 >