首先关闭所有:对不起 - 我知道已经存在几个与python导入机制有关的问题。然而,经过几个小时的搜索,我仍然无法找到足够的答案。
我的GitLab服务器上托管了两个独立的Python项目。 我们称之为 foo 和 foo-Tester 。 顾名思义, foo-Tester 是 foo -Project的自动测试程序。
foo 具有以下结构:
- foo-Tester
- __init__.py
- tester.py
这些类通过相对导入相互导入。
为了这个例子, foo-Tester 项目只包含:
from foo.fooClass import fooClass
myfoo = fooClass()
tester.py 只包含:
- some-folder
- foo
- foo-Tester
两个项目在文件系统上彼此相邻:
-m
所以我的问题是:将 fooClass 从 foo 导入 tester.py 的最佳方法/最佳做法是什么?的 FOO-测试 - 项目?
一些答案(例如this建议使用 setup.py 。据我了解这种方法,需要安装 foo -Project它被改变的时间 - 我是否正确? 这对我们来说不是一个好的解决方案,因为项目正处于大量发展阶段,每天都会有很多变化。
This回答建议将 foo 项目路径添加到系统路径。并使用relative imports not allowed
标志
关于这种方法的两个问题:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<Pattern>%d %-4relative [%thread] %-5level %logger{35} -
%msg%n</Pattern>
</encoder>
</appender>
<appender name="SAVE-TO-FILE" class="ch.qos.logback.core.FileAppender">
<file>${jboss.server.log.dir}/amset.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="SAVE-TO-FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
- 错误。我正在使用Python 3.6。 那么描述问题的最佳方法是什么?
提前谢谢!
答案 0 :(得分:0)
从这里的帖子: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