Python从不同的项目导入类

2024-09-26 18:03:39 发布

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

首先:抱歉-我知道已经有几个问题与python导入机制有关。然而,经过几个小时的搜索,所以我仍然找不到一个足够的答案给我。你知道吗

问题

我在GitLab服务器上托管了两个独立的Python项目。 我们称它们为foofoo Tester。 顾名思义,foo Testerfoo项目的自动测试程序。你知道吗

foo的结构如下:

-foo
  - __init__.py
  - fooClass.py
  -bar
     - __init__.py
     - barClass.py
  -foobar
     - __init__.py
     - foobarClass.py
   etc.

这些类通过相对导入相互导入。你知道吗

在本例中,foo Tester项目仅包含:

- foo-Tester
   - __init__.py
   - tester.py

测试仪.py仅包含:

from foo.fooClass import fooClass
myfoo = fooClass()

这两个项目在文件系统上彼此相邻:

- some-folder
   - foo
   - foo-Tester

所以我的问题是:将foo类foo导入的最佳方法/最佳实践是什么测试仪.py来自foo Tester-项目?你知道吗

我试过的

使用设置.py

一些答案(例如this)建议使用设置.py。据我所知,每次更改时都需要安装foo-项目-对吗? 这对我们来说不是一个好的解决方案,因为这个项目正在进行大量的开发,每天都有很多变化。你知道吗

附加到系统路径

This答案建议在系统路径中添加foo项目路径。并使用-m标志运行脚本

这种方法有两个问题:

  • 修改系统路径似乎有点麻烦
  • 这似乎不适用于foo项目的相对导入,因为它总是抛出relative imports not allowed错误。你知道吗

我使用的是python3.6。 那么,对于所描述的问题,最好的方法是什么呢?你知道吗

提前谢谢!你知道吗


Tags: 项目方法答案py路径服务器fooinit
1条回答
网友
1楼 · 发布于 2024-09-26 18:03:39

从这里的线程:Importing modules from parent folder,这是从父(或任何其他)文件夹导入模块的方法。你知道吗

import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir) 

import mymodule

相关问题 更多 >

    热门问题