如何使用字符串变量作为位置来访问模块?

发布于 2025-01-11 01:45:58 字数 252 浏览 0 评论 0原文

我有一个字符串变量 x,并且想要使用输入来调用子文件夹中的模块,如下所示。如何使用该字符串作为路径的一部分?

x = input()

from subfolder.x import y

我的代码从父文件夹“main.py”运行,并使用行:

os.chdir(os.path.dirname(os.path.abspath(__file__)))

设置文件路径。

I have a string variable x, and want to use input to call a module in a subfolder, as shown below. How can I use this string as part of the path?

x = input()

from subfolder.x import y

My code is run from a parent folder 'main.py' and uses the line:

os.chdir(os.path.dirname(os.path.abspath(__file__)))

to set the file path.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

药祭#氼 2025-01-18 01:45:58

如果需要动态导入,请查看 importlib.import_module 考虑以下简单示例

import importlib
modulename = "html"
submodulename = "entities"
what = "html5"
module = importlib.import_module(modulename + "." + submodulename)
thing = getattr(module,what)
print(thing["gt;"])  # >

If you need to dynamically import, take look at importlib.import_module consider following simple example

import importlib
modulename = "html"
submodulename = "entities"
what = "html5"
module = importlib.import_module(modulename + "." + submodulename)
thing = getattr(module,what)
print(thing["gt;"])  # >
悟红尘 2025-01-18 01:45:58

根据 Python 文档,以下是 import 语句如何搜索要导入的正确模块或包:

当导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,则会在变量sys.path给定的目录列表中搜索名为spam.py的文件。sys.path 从这些位置初始化:

  • 包含输入脚本的目录(未指定文件时为当前目录)。
  • PYTHONPATH(目录名称列表,与 shell 变量 PATH 语法相同)。
  • 依赖于安装的默认值。

初始化后,Python程序可以修改sys.path。包含正在运行的脚本的目录放置在搜索路径的开头,标准库路径之前。这意味着将加载该目录中的脚本而不是库目录中的同名模块。

来源:Python 2 和 3

因此,您可以使用 sys.path.append 将位置附加到路径,但是一旦关闭 Python,sys.path 将被设置回默认值。
所需位置永久添加到 PYTHONPATH 中

export PYTHONPATH="${PYTHONPATH}:/my/other/path"

或者,您可以通过添加适合您使用的任何 shell 的启动脚本(例如,用于 bash 的 .bashrc ),将

According to Python documentation, here is how an import statement searches for the correct module or package to import:

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.pathsys.path is initialized from these locations:

  • The directory containing the input script (or the current directory when no file is specified).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • The installation-dependent default.

After initialization, Python programs can modify sys.path. The directory containing the script being run is placed at the beginning of the search path, ahead of the standard library path. This means that scripts in that directory will be loaded instead of modules of the same name in the library directory.

Source: Python 2 and 3

So you can use sys.path.append to append a location to the path, but once you close Python, sys.path will be set back to default.
Or you can add the desired location permannently to PYTHONPATH by adding

export PYTHONPATH="${PYTHONPATH}:/my/other/path"

in a startup script appropriate to whatever shell you're using (.bashrc for bash, for example)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文