首页 > 解决方案 > Python在本地包中导入本地包时遇到问题

问题描述

这是我在这里的第一篇文章,我对 python 也很陌生,在过去的两天里,我一直在努力解决这个错误:

Traceback (most recent call last):
File "Main.py", line 6, in <module>
    import PyScrape
File "/Users/arya/Desktop/Coding/Python/x/x/PyScrape/__init__.py", line 1, in <module>
    from . import ProxyScraper
File "/Users/arya/Desktop/Coding/Python/x/x/PyScrape/ProxyScraper/__init__.py", line 6, in <module>
    from . import FreeProxyList
ModuleNotFoundError: No module named 'ProxyScraper'

当尝试在“PyScrape”目录内的__init__.py文件中导入“ProxyScraper”目录时,我的文件结构如下,如果我需要透露更多信息,请告诉我。

PyScrape/
    __init__.py
    ProxyChecker.py
    ProxyScraper/
        __init__.py
        CheckerProxy.py
        FreeProxyList.py
        Hidester.py
        HttpTunnel.py
        PremProxy.py
        SpysMe.py
        Utility.py

__init__.py“PyScrape”目录中的内容如下:

from . import ProxyScraper
from . import ProxyChecker

def Scrape():
     return ProxyChecker.CheckProxyList(ProxyScraper.Scrape())

“ProxyScraper”目录内的内容__init__.py如下: from threading import Thread from queue import Queue

from . import FreeProxyList
from . import Hidester
from . import CheckerProxy
from . import SpysMe
from . import HttpTunnel

SourceArray = ["FreeProxyList", "Hidester", "CheckerProxy", "SpysMe", "HttpTunnel"]

def Scrape():
    WorkerList = []
    ProxyQueue = Queue()

    for Source in SourceArray:
        Worker = Thread(name=Source, target=eval(Source + ".Scrape"), args=(ProxyQueue,))
        WorkerList.append(Worker)
        Worker.start()

    for Worker in WorkerList:
        Worker.join()

    return ProxyQueue

标签: pythonpython-3.xpython-importpython-modulepython-packaging

解决方案


对于要导入的 python 模块,它的包含目录必须设置PYTHONPATH在文件中的变量中$HOME/.bashrc,例如,或者sys.path在运行时显式插入。

一种解决方案是:

>>> import sys
>>> sys.path.insert(0, '/path/to/PyScrape')

另一个是:

$ echo 'export PYTHONPATH=$PYTHONPATH:/path/to/PyScrape' >> $HOME/.bashrc
$ source $HOME/.bashrc

请记住,而不是.bashrc相关文件可能是.profile.

当你设置PYTHONPATH然后命令的结果:

>>> import sys
>>> sys.path

将包含您设置的路径,$PYTHONPATH因为:

sys.path是指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。


推荐阅读