相关疑难解决方法(0)

如何在python中重载内置模块?

我正在尝试将主机绑定到我的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)

在这种情况下:

  1. 我怎样才能使main.py使用test / socket.py import socket

  2. 如何在使用其他模块时使用test / socket.py import socket

我认为更改模块查找路径顺序可能会有所帮助。但是我发现,即使当前path('')已经位于sys.path并且import socket仍然会导入内置的scoket模块。

python sockets

5
推荐指数
1
解决办法
892
查看次数

pycharm recnoizes 导入但仍然 ValueError: Attempted relative import Beyond toplevel package django project on make migrations

看看这张照片......(每次我这样做都让我发笑......哈哈,我不得不面对多么糟糕的乐队......无论如何)废话

我正在尝试将 views.py 文件从我的场所目录导入到suitsandtables 目录中的 urls.py 文件中,该目录与我的场所目录处于同一级别。

这些目录中的每一个都有一个__init__.py空文件。Pycharm 很高兴,但我仍然收到ValueError: Attempted relative import beyond toplevel package错误消息。这开始让我发疯。

我们能解决这个废话吗?亲切

python django import pycharm

4
推荐指数
1
解决办法
3581
查看次数

ValueError:尝试在非包中进行相对导入

我有两个 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为好。但是,我仍然遇到相同的错误。

这里似乎有什么问题?

python python-2.7

3
推荐指数
1
解决办法
1万
查看次数

即使我里面有 __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。但这没有用。

我在这里缺少什么吗?

python python-import

3
推荐指数
1
解决办法
7330
查看次数

ImportError:无法导入设置 - 没有模块命名设置

我有一个似乎是一个基本的路径问题,但我无法弄清楚我的生活.

我有以下目录结构:

    ??? 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

到目前为止我尝试了什么:

  1. 我已经检查了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

  2. 我试图手动加载设置,没有运气文件:从博客/设置目录我已经尝试(我不知道这是否是测试这个但是基于阅读的正确方法: …

django

2
推荐指数
1
解决办法
6372
查看次数

从另一个文件夹导入函数的简单方法,但要使用 pytest

我正在寻找一种从另一个文件夹导入函数的简单方法:

|--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)

python pytest

0
推荐指数
1
解决办法
537
查看次数

标签 统计

python ×5

django ×2

import ×1

pycharm ×1

pytest ×1

python-2.7 ×1

python-import ×1

sockets ×1