Eci*_*ana 11 python import symlink
我有一个文件夹A,其中包含一些Python文件和__init__.py.
如果我将整个文件夹A复制到其他文件夹B并在那里创建一个带有"import A"的文件,它就可以了.但现在我删除文件夹并移动到原始文件夹的符号链接.现在它不起作用,说"没有名为foo的模块".有谁知道如何使用符号链接进行导入?
Don*_*ion 10
Python不会检查您的文件是否是符号链接!您的问题可能在于重命名模块或在搜索路径中没有它们!
如果ModuleA变为ModuleB并且您尝试导入ModuleA,则无法找到它,因为它不存在.
如果将ModuleA移动到另一个目录中并生成带有另一个名称(表示新目录)的符号链接,则此新目录必须是脚本和模块的公共父目录,或者symlink目录必须位于搜索路径中.
顺便说一句,目前尚不清楚你是指模块还是包装.包含该__init__.py文件的目录成为所有文件的包,其中包含扩展名.py(= modules).
DIRA
+ __init__.py <-- makes DIRA to package DIRA
+ moduleA.py <-- module DIRA.moduleA
Run Code Online (Sandbox Code Playgroud)
移动和符号链接
/otherplace/DIRA <-+
| points to DIRA
mylibraries/SYMA --+ symbolic link
Run Code Online (Sandbox Code Playgroud)
如果SYMA与DIRA具有相同的名称,并且您的脚本位于SYMA目录中,那么它应该可以正常工作.如果没有,那么你必须:
import sys
sys.path.append('/path/to/your/package/root')
Run Code Online (Sandbox Code Playgroud)
如果要从SYMA包中导入模块,您必须:
import SYMA.ModuleA
Run Code Online (Sandbox Code Playgroud)
一个简单的:
import SYMA
Run Code Online (Sandbox Code Playgroud)
将包名称,而不是包中的模块导入您的命名空间!
小智 6
如果您的符号链接设置不正确,就会发生这种行为。例如,如果您使用相对文件路径创建它们。在这种情况下,符号链接的创建不会出错,但不会指向任何有意义的地方。
如果这可能是导致错误的原因,请使用完整路径创建链接,并通过ls链接和观察预期的目录内容来检查它们是否正确。
| 归档时间: |
|
| 查看次数: |
14254 次 |
| 最近记录: |