我有一个名为websocket的模块。对于这个模块,我想要一些测试,对于这些测试我pip install
适当的模块。问题是已安装的模块与我自己的模块具有完全相同的名称。
项目结构:
websocket-server
|
|---- websocket.py
|
'---- tests
|
'---- test.py
test.py :
from websocket import WebSocketsServer # my module
from websocket import create_connection # installed module
有没有办法解决这个问题:
websocket.py
)__init__()
答案 0 :(得分:3)
您可以将模块嵌套在包中吗?
from mywebsocket.websocket import WebSocketsServer # my module
from websocket import create_connection # installed module
答案 1 :(得分:0)
有一个 imp 模块 - 虽然它已经在Python 3.4中被弃用了。它允许您动态导入模块
my_websource = imp.load_source('my_websource', <path to your module.py>')
答案 2 :(得分:0)
我最终解决了这个问题。解决方案是hackish但它并不重要,因为它只适用于一种特定类型的测试。
import websocket as wsclient # importing the installed module
del sys.modules["websocket"]
sys.path.insert(0, '../..')
import websocket # importing my own module
所以我现在可以将我自己的模块称为websocket
,将已安装的模块称为wsclient
。
答案 3 :(得分:0)
您可以选择不同的大小写,例如webSocket,因为Python分辨率区分大小写。
答案 4 :(得分:0)
我已经解决了类似脏问题的问题,只能在UNIX / Linux中使用。
在根文件夹中,为自己建立一个软链接:
> ln -s . myroot
然后只需使用简单的前缀导入您想要的任何内容:
import myroot.websocket