【问题标题】:importing functions from subfolder in windows and linux从 windows 和 linux 的子文件夹导入函数
【发布时间】:2019-09-16 12:37:04
【问题描述】:

我想从子文件夹内的文件中导入函数。 文件名因前面的代码而异,这就是我得到“文件”变量的原因。

我想出了适用于 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

【问题讨论】:

    标签: python linux windows import


    【解决方案1】:

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

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

    请参阅sys.path 并通过BrenBarn's answer 阅读更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2013-02-19
      • 2020-10-12
      • 2017-11-04
      • 1970-01-01
      • 2019-11-24
      • 2012-02-15
      相关资源
      最近更新 更多