有两个文件夹,每个文件夹都包含一个python文件。 例如:first_folder包含a.py& second_folder包含b.py
我尝试在a.py中导入b.py. 但我没有导入错误。
ImportError:没有名为b的模块
请帮我解决这个问题。我也尝试在两个文件夹中创建一个空白的 init .py,但它没有用。
文件夹结构:
/ home / user / scripts /
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.myapp.internal.MainLauncher</mainClass>
<addResources>true</addResources>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
答案 0 :(得分:0)
如果文件位于同一目录中,请输入此
Import .other_file
答案 1 :(得分:0)
Python的import
将在python路径中查找模块(.py
文件)。您可以在sys.path
变量中看到python路径中的内容。
默认情况下,sys.path
将包含您运行的脚本所在的目录。它还将包括PYTHONPATH
环境变量中定义的所有内容。
因此,如果你有两个带有.py
文件的目录,你可以将它们放在python路径中,或者你可以确保所有源代码都在同一个路径条目下。
(这个语法取决于你的shell,这里是用于windows)
set PYTHONPATH=%PYTHONPATH%;\path\to\second_folder
python \path\to\first_folder\a.py
然后,你可以简单地import b
。
在两个目录中创建一个空的__init__.py
,在它们上面的目录中创建一个run.py
,所以你有:
root_dir
run.py
first_folder
__init__.py
a.py
sedond_folder
__init__.py
b.py
使run.py
成为您的入口点(运行python run.py
),然后您可以使用其完整的模块名称从任何其他模块导入任何模块:
import first_folder.a
import second_folder.b
答案 2 :(得分:0)
假设你有这样的文件
.
├── first_folder
│ └── a.py
└── second_folder
└── b.py
您可以使用abs路径导入a.py
作为b.py
import importlib.util
spec = importlib.util.spec_from_file_location('a', 'path/to/first_folder/a.py')
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
print(dir(foo))
还有另一种方便的方法来加载b.py
$ cd path / to / second_folder
$ ln -s path/to/first_folder ./first_folder
并将a.py
导入为普通的python模块
import a from first_folder