我正在尝试将主机绑定到我的python程序中的指定ips。只需使其在python程序中起作用即可,因此我将不修改该/etc/hosts文件。
我试图在该create_connection函数中添加一些代码以socket.py进行主机IP转换,如下所示:
host, port = address # the original code in socket.py
# My change here:
if host == "www.google.com":
host = target_ip
for res in getaddrinfo(host, port, 0, SOCK_STREAM): # the original code in socket.py
Run Code Online (Sandbox Code Playgroud)
我发现它工作正常。
现在,我希望host-ip转换仅在此python程序中有效。
所以我的问题是:使用时,如何使我的python程序导入此socket.py而不是内置的import socket?
为了清楚起见,这是一个示例。假设“ test”是我的工作目录:
test
|--- main.py
|--- socket.py
Run Code Online (Sandbox Code Playgroud)
在这种情况下:
我怎样才能使main.py使用test / socket.py import socket?
如何在使用其他模块时使用test / socket.py import socket?
我认为更改模块查找路径顺序可能会有所帮助。但是我发现,即使当前path('')已经位于sys.path并且import socket仍然会导入内置的scoket模块。
我有两个 Python 文件,一个存储在 location 中/Python/plata.py,另一个存储在location 中/Python/tao/mock.py。这是我的plata.py文件的样子::
def printSomething():
print 'This is a test.'
Run Code Online (Sandbox Code Playgroud)
我正在尝试printSomething()在我的mock.py文件中导入函数,如下所示:
from . import plata
plata.printSomething()
Run Code Online (Sandbox Code Playgroud)
但是,这是我遇到的错误:
Traceback (most recent call last):
File "/home/manas/Python/tao/mock.py", line 1, in <module>
from . import plata
ValueError: Attempted relative import in non-package
Run Code Online (Sandbox Code Playgroud)
我已经包含在__init__.py文件中的位置/Python/__init__.py,并/Python/tao/__init__.py为好。但是,我仍然遇到相同的错误。
这里似乎有什么问题?
我正在Macbook上做一个项目,其系统是OS X 10.11.5。我使用Python 3.5并且有一个像这样的目录
rec-par/
rec/
__init__.py
cle/
__init__.py
c.py
par/
__init__.py
b.py
util/
__init__.py
a.py
Run Code Online (Sandbox Code Playgroud)
里面a.py有一个import像
from rec.par.b import *
Run Code Online (Sandbox Code Playgroud)
它出现了类似的错误'No module name rec.par , rec is not a package'。我已将路径“rec-par”添加到 sys.path 中,并且cle/c.py使用相同的导入命令没有错误。
我尝试了问题如何修复“尝试相对导入非包”中给出的方法,即使使用 __init__.py ,使用python3 -m a.py。但这没有用。
我在这里缺少什么吗?
我有一个似乎是一个基本的路径问题,但我无法弄清楚我的生活.
我有以下目录结构:
??? rockitt
??? activities
? ??? migrations
? ??? templates
? ? ??? activities
? ??? templatetags
??? blog
? ??? settings
Run Code Online (Sandbox Code Playgroud)
内blog/settings我有:
base.py dev.py __init.py__
__init.py__ 在上面的目录中包含:
from .dev import *
运行manage.py之类的东西时,我收到以下错误:
ImportError: Could not import settings 'blog.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named settings
到目前为止我尝试了什么:
我已经检查了manage.py运行时存在哪些路径,以下路径位于列表顶部:
rockitt
lib/python2.7/Django-1.7.7-py2.7.egg
lib/python2.7
[other dirs...]
ENV/lib/python27.zip
ENV/lib/python2.7
ENV/lib/python2.7/plat-linux2
ENV/lib/python2.7/lib-tk
ENV/lib/python2.7/lib-old
ENV/lib/python2.7/lib-dynload
/usr/local/lib/python2.7
/usr/local/lib/python2.7/plat-linux2
/usr/local/lib/python2.7/lib-tk
ENV/lib/python2.7/site-packages
我试图手动加载设置,没有运气文件:从博客/设置目录我已经尝试(我不知道这是否是测试这个但是基于阅读的正确方法此: …
我正在寻找一种从另一个文件夹导入函数的简单方法:
|--mylib
| |--__init__.py
| |--mylib2.py
|
|--mytest
| |--other.py
| |--test_one.py
|
|--mymain.py
Run Code Online (Sandbox Code Playgroud)
mylib2.py
def suma(a,b):
return a+b
Run Code Online (Sandbox Code Playgroud)
mymain.py
from mylib.mylib2 import suma
def main():
a=3
b=4
c=suma(a,b)
print(c)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
其他.py
from mylib.mylib2 import suma
c=suma(1,2)
print(c)
Run Code Online (Sandbox Code Playgroud)
测试一.py
from mylib.mylib2 import suma
def test_nothing():
assert True
def test_crash():
e=0
#d=30/e
assert True
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我无法正常从 other.py 调用 suma (因为我不知道如何正确地将 mylib2.py 包含在 mytest 文件夹中的文件中,但按照这个答案我可以这样做
python3 -m mytest.other
3
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何运行 pytest(包括库)
如果我进行 pytest 我会收到一条消息
from mylib.mylib2 import …Run Code Online (Sandbox Code Playgroud)