python - 从 windows 和 linux 中的子文件夹导入函数

标签 python linux windows import

我想从子文件夹中的文件中导入函数。 文件名因之前的代码而异,这就是我获得"file"变量的原因。

我为 Windows 和 Linux 编写了不同的代码。

文件夹布局是这样的:

#ls project/
file.py  subfolder
#ls project/subfolder/
subfile.py

文件.py

import os
os.chdir('subfolder')
file = 'subfile'
if os.name == 'nt': #for windows
    exec('from ' + file + ' import *')
else:
    exec('from subfolder.' + file + ' import *')
print(subfunction())

子文件.py

def subfunction():
    return 1

这种不同的行为对我来说似乎很奇怪,因为它是 2 个不同操作系统上的相同编程语言。 有人有比这更好的代码示例,或者可以详细说明为什么会这样吗?

注意:在 Windows 上我从 Anaconda 获得了 Python 版本 3.6.5,在 Linux 上获得了 Python 3.7.4

最佳答案

正确的方法就是 Linux 方法。我不确定为什么 windows 方法适合您。

os.chdir() 不应影响 python 查找要导入的模块的路径。 python 查找它们的路径位于 sys.path 中。

参见 sys.path并阅读更多信息 BrenBarn's answer .

关于python - 从 windows 和 linux 中的子文件夹导入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957054/

相关文章:

python - 导入 Manim 无法解决 Pylance

python - 在 Mac 上运行构建的 PyTables 时出现问题

python - 按类型绘制 Pandas 数据框

linux - Linux shell 脚本中十进制的等效字符

linux - 如何显示在机器 Y 中运行的命令的输出,而程序是在机器 X 中编写的?

python - 为什么在 Windows 上使用 python 套接字进行端口扫描比在 linux 上慢得多?

windows - 在 apache/Linux 服务器上自动验证 Windows 用户

python - 使用 sklearn.AgglomerativeClustering 绘制树状图

c# - 如何使用 .Net Core 在 Linux 上获取当前执行目录?

windows - 如何启动 MeeGo AppDev?