`importlib` 不是 utilising/recognising 路径
`importlib` not utilising/recognising path
我正在尝试导入模块,同时 运行 我的主要 python 脚本,使用较小的 setup.py
脚本。但是 importlib 命令:importlib.util.spec_from_file_location(name, location)
似乎没有检测到我的小 python 脚本。大概我没有正确填写 name
或 location
字段。
示例脚本 A (setup.py
):
import os
import pandas as pd
print("success!") # So I can see it has run.
示例脚本 B (my_script.py
):
import importlib
setup_path = ("/home/solebay/My Project Name/")
start_up_script = importlib.util.spec_from_file_location("setup.py", setup_path)
module = importlib.util.module_from_spec(start_up_script)
运行 上面的片段 returns:
AttributeError: 'NoneType' object has no attribute 'loader'
我随后通过运行type(start_up_script)
调查,它给出的结果是typeNone
。
路径正确。我通过以下 运行 验证了这一点:
"/home/solebay/My Project Name/"
sudo python3 "/home/solebay/My Project Name/setup.py"
这些分别打印了消息 is a directory
和 success!
。
注意: Maurice Meyer 成功回答了我的主要问题,所以我将其标记为正确。但是,我还没有实现我的主要目标;即通过另一个脚本导入模块。所以如果这是你的目标,这个问题可能不适合你。
传递给 spec_from_file_location
的 location
参数必须是 python 脚本的完整路径:
import importlib.util
spec = importlib.util.spec_from_file_location(
name='something__else', # name is not related to the file, it's the module name!
location='/tmp/solebay/My Project Name/setup.py' # full path to the script
)
my_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(my_mod)
print(my_mod)
输出:
success!
<module 'something__else' from '/tmp/solebay/My Project Name/setup.py'>
我正在尝试导入模块,同时 运行 我的主要 python 脚本,使用较小的 setup.py
脚本。但是 importlib 命令:importlib.util.spec_from_file_location(name, location)
似乎没有检测到我的小 python 脚本。大概我没有正确填写 name
或 location
字段。
示例脚本 A (setup.py
):
import os
import pandas as pd
print("success!") # So I can see it has run.
示例脚本 B (my_script.py
):
import importlib
setup_path = ("/home/solebay/My Project Name/")
start_up_script = importlib.util.spec_from_file_location("setup.py", setup_path)
module = importlib.util.module_from_spec(start_up_script)
运行 上面的片段 returns:
AttributeError: 'NoneType' object has no attribute 'loader'
我随后通过运行type(start_up_script)
调查,它给出的结果是typeNone
。
路径正确。我通过以下 运行 验证了这一点:
"/home/solebay/My Project Name/"
sudo python3 "/home/solebay/My Project Name/setup.py"
这些分别打印了消息 is a directory
和 success!
。
注意: Maurice Meyer 成功回答了我的主要问题,所以我将其标记为正确。但是,我还没有实现我的主要目标;即通过另一个脚本导入模块。所以如果这是你的目标,这个问题可能不适合你。
传递给 spec_from_file_location
的 location
参数必须是 python 脚本的完整路径:
import importlib.util
spec = importlib.util.spec_from_file_location(
name='something__else', # name is not related to the file, it's the module name!
location='/tmp/solebay/My Project Name/setup.py' # full path to the script
)
my_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(my_mod)
print(my_mod)
输出:
success!
<module 'something__else' from '/tmp/solebay/My Project Name/setup.py'>