从Mac上的Volume执行时出现奇怪的导入行为

时间:2018-05-29 16:32:09

标签: python google-drive-team-drive

Google文件流是一种用于将我的Google Drive文件同步到Mac的工具。它在Finder中显示为外部卷。如果我有一个简单的python脚本,我可以正常执行它。但是,当我尝试导入存在于卷上同一目录中的另一个模块时,出现导入错误。例如:

main.py:

import foo
print('hi')

foo.py:

def bar():
    return 1

运行:

> cd /Volumes/GoogleDrive/My\ Drive/Project
> ls
> main.py    foo.py
> python3 main.py

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import foo
ModuleNotFoundError: No module named 'foo'

甚至更奇怪:

main.py

import os            # importing standard modules always worked
print(os.listdir())  # import error returns if this line is removed!!!

import foo           # no error?!
print(foo.bar())     # prints 1

导入错误在此代码中消失。但是,如果删除print(os.listdir()),则会返回导入错误。此外,os.listdir()返回一个意外的空列表。

0 个答案:

没有答案