【问题标题】:How to access a module from outside your file folder in Python? [duplicate]如何从 Python 中的文件夹外部访问模块? [复制]
【发布时间】:2014-09-12 04:09:06
【问题描述】:

如何从另一个文件夹访问模块?

这是文件结构:

/<appname>
    /config
        __init__.py
        config.py
    /test
        test.py # I'm here

我想从 test.py 访问 config.py 的函数。我该怎么做?
这是我的导入:

import config.config

当我运行test.py 脚本时,它总是会说:

ImportError: No module named config.config

我是不是做错了什么?

【问题讨论】:

标签: python


【解决方案1】:

最简单的方法是修改sys.path变量(它定义了导入搜索路径):

# Bring your packages onto the path
import sys, os
sys.path.append(os.path.abspath(os.path.join('..', 'config')))

# Now do your import
from config.config import *

【讨论】:

  • 这里的“..”是什么,请解释一下
  • 在处理相对路径时,这是“向上一个目录”的标准路径语义。
  • 如果要向上2个目录,只需将'..'替换为'../..'
  • 嗯,不完全是。这是在join 块内。所以你会做join('..','..','config')
  • 可以使用os.path.pardir 而不是'..'。所以它变成了:sys.path.append(os.path.abspath(os.path.join(os.path.pardir, 'config')))
【解决方案2】:

你只能导入你的环境可见的模块。您可以使用它检查环境。

import sys
print sys.path

正如您将看到的 sys.path 是一个列表,因此您可以将元素附加到它:

sys.path.append('/path_to_app/config')

你应该可以导入你的模块了。

顺便说一句:关于这个有很多问题。

【讨论】:

    【解决方案3】:

    将应用目录添加到模块搜索路径。

    例如:

    PYTHONPATH=/path/to/appname python test.py
    

    【讨论】:

    • 你是个传奇!
    • 你能详细说明一下吗?
    • @Mohith7548,在命令前添加PYTHONPATH=/path/to/appname。 (假设unix,模块在/path/to/appname目录下)
    • 好的,这是信息。在 Windows 中怎么样?
    • @Mohith7548 执行set PYTHONPATH=...,然后执行命令。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多