我有一个文件夹 A,其中包含一些 Python 文件和 __init__.py。
如果我将整个文件夹 A 复制到另一个文件夹 B 中并创建一个带有 "import A" 的文件,它可以工作。但现在我删除了文件夹并添加了一个指向原始文件夹的符号链接。现在它无法工作,提示 "No module named foo"。有人知道如何使用符号链接进行导入吗?
Python不会检查你的文件是否是符号链接!你的问题可能在于重命名模块或者没有将它们添加到搜索路径中!
如果ModuleA变成了ModuleB并且你试图导入ModuleA,那么它会找不到ModuleA,因为它不存在。
如果你将ModuleA移到另一个目录,并用另一个名称生成符号链接,该符号链接表示一个新的目录,那么这个新目录必须是你的脚本和模块的共同父目录,或者这个符号链接目录必须在搜索路径中。
顺便提一下,不清楚你指的是模块还是包。包含__init__.py
文件的目录成为包,其中包含扩展名为.py
的所有文件(即模块)。
DIRA
+ __init__.py <-- makes DIRA to package DIRA
+ moduleA.py <-- module DIRA.moduleA
移动文件并创建符号链接
/otherplace/DIRA <-+
| points to DIRA
mylibraries/SYMA --+ symbolic link
如果 SYMA 的名称与 DIRA 相同并且您的脚本位于 SYMA 目录中,则应该可以正常工作。如果不是,则您需要:
import sys
sys.path.append('/path/to/your/package/root')
如果你想从你的包SYMA中导入一个模块,你必须:
import SYMA.ModuleA
一个简单的:import SYMA
导入packagename将包,但不是包中的模块导入到您的命名空间!
ln -s "$PWD/path/to/fileordir" "$PWD/path/to/symlink"
。 - undefined