`importlib` 不是 utilising/recognising 路径

`importlib` not utilising/recognising path

我正在尝试导入模块,同时 运行 我的主要 python 脚本,使用较小的 setup.py 脚本。但是 importlib 命令:importlib.util.spec_from_file_location(name, location) 似乎没有检测到我的小 python 脚本。大概我没有正确填写 namelocation 字段。

示例脚本 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 directorysuccess!


注意: Maurice Meyer 成功回答了我的主要问题,所以我将其标记为正确。但是,我还没有实现我的主要目标;即通过另一个脚本导入模块。所以如果这是你的目标,这个问题可能不适合你。

传递给 spec_from_file_locationlocation 参数必须是 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'>