标签: python-module

获取模块名称:x .__ module__ vs x .__ class __.__ module__

我想获取Python对象所来自的模块.都

x.__module__
Run Code Online (Sandbox Code Playgroud)

和

x.__class__.__module__
Run Code Online (Sandbox Code Playgroud)

似乎工作.这些完全是多余的吗?是否有理由偏爱另一个?

python module python-module

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

摆脱easy_install消息::模块引用__file__

module name: module references __file__

当我使用easy_install安装我自己的软件包并且初始谷歌搜索没有带来任何成功时,这会出现几次.

我完全知道我__file__在模块内部使用,但它没有任何问题.

如何在不删除__file__引用的情况下删除此消息?

python packages python-module

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

一个Python模块如何打破另一个?

经过几个小时的调试和反复试验,我发现导入两个独立的Python模块导致其中一个函数停止工作.

import arcpy
# works
sde_conn = arcpy.ArcSDESQLExecute(r"C:\temp\test.sde")
Run Code Online (Sandbox Code Playgroud)

然而:

import arcpy
import rtree
# fails
sde_conn = arcpy.ArcSDESQLExecute(r"C:\temp\test.sde")
Run Code Online (Sandbox Code Playgroud)

这两个Python模块是rtree和ESRI的arcpy,我在Windows上运行这两个模块(问题出现在Windows 7和Windows Server 2008 R2以及32位和64位Python安装上).

我记录了这个问题,但是我想知道一个模块在另一个模块中破坏功能的可能原因是什么?

我快速检查了全局变量,并修改了系统路径.两者都依赖于DLL.

还有哪些其他因素可以解决?

python python-module python-import

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

cx_freeze和导入模块

我想使用cx_freeze编译带有子模块的Python 3.3模块.

所以,我的dir结构是:

projectname/
     __init__.py
     submodule1/
          __init__.py
          bootstrap.py
          script1.py
          submodule11/
                   script2.py
     submodule2/
          ...
Run Code Online (Sandbox Code Playgroud)

在__init__.py我导入

from submodule1 import bootstrap
Run Code Online (Sandbox Code Playgroud)

并从引导程序

import submodule1.submodule11.script2
Run Code Online (Sandbox Code Playgroud)

如果我运行init文件,一切都很好,并且正确执行带有子模块导入的脚本.

当我编译它时,我使用这个setup.py:

from cx_Freeze import setup,Executable
import sys

includes = []
excludes = ['Tkinter']
packages = ['submodule1', 'submodule2']
base = "Win32GUI"
setup(
    name = 'myapp',version = '0.1',description = 'app',author = 'user',
    options = {'build_exe': {'excludes':excludes,'packages':packages}}, 
    executables = [Executable('__init__.py',base=base)]
)
Run Code Online (Sandbox Code Playgroud)

并在'projectname'目录中运行脚本.

但是,如果我启动应用程序,我会ImportError: no module named 'submodule1.submodule11'从错误对话框中获取.

这是真的:在library.zip中,这个子模块不存在.

我做错了什么?

python executable compilation python-module cx-freeze

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

Python导入一个没有其他子包的子包

我有以下包结构

package
    __init__.py
    sub1
        __init__.py
        foo.py      # Contains class Foo
    sub2
        __init__.py
        bar.py      # Contains class Bar
Run Code Online (Sandbox Code Playgroud)

我希望能够公正import package和有package.Foo和package.Bar,即我想有子包是对用户透明.

问题是导入sub2需要很长时间,许多用户根本不关心sub2中的东西,只想要sub1中的东西.因此,我希望用户能说import package.sub1或from package import sub1到刚刚导入SUB1和SUB2跳跃的进口.

我知道我可以通过package/__init__.py控制来实现第一部分

from .sub1 import *
from .sub2 import *
Run Code Online (Sandbox Code Playgroud)

和具有package/sub1/__init__.py可from .foo import Foo与类似地对于SUB2.但是,即使用户仅尝试导入,也会始终导入sub1和sub2 package.sub1.

相应地,我可以通过package/__init__.py使用与sub1/__init__.py上面相同的空来实现第二部分.但是,然后只是说不import package加载sub1或sub2,所以用户必须显式加载它们然后引用package.sub1.Foo.

理想情况下,解决方案在2.7.10和3.5.0中均可使用,但如果两者都不可能,我将接受其中一个或另一个.

python packages python-module python-import

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

我的电脑时,PyUsb无法识别我的USB设备

我正在尝试在我的PC和PIC18F4550之间进行通信,但是程序没有检测到它,而计算机正在设备管理器中显示它.

import usb.core

dev = usb.core.find(idVendor = 0x04D8, idProduct = 0xFEAA)
Run Code Online (Sandbox Code Playgroud)

检查USB设备的功能:

def find(find_all = False, backend = None, custom_match = None, **args):
    def device_iter(k, v):
        for dev in backend.enumerate_devices():
            d = Device(dev, backend)
            if  _interop._reduce(lambda a, b: a and b,map(operator.eq,v,map(lambda i:getattr(d,i),k)),True)and (custom_match is None or custom_match(d)):
                yield d
        if backend is None:
            import usb.backend.libusb1 as libusb1
            import usb.backend.libusb0 as libusb0
            import usb.backend.openusb as openusb

            for m in (libusb1, openusb, libusb0):
                backend = m.get_backend()
                if backend is not …
Run Code Online (Sandbox Code Playgroud)

python python-module libusb python-2.7 pyusb

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

为什么模块不能成为上下文管理器(对'with'语句)?

假设我们有以下内容mod.py:

def __enter__():
    print("__enter__<")

def __exit__(*exc):
    print("__exit__< {0}".format(exc))

class cls:
    def __enter__(self):
        print("cls.__enter__<")

    def __exit__(self, *exc):
        print("cls.__exit__< {0}".format(exc))
Run Code Online (Sandbox Code Playgroud)

以及它的以下用途:

import mod

with mod:
    pass
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Traceback (most recent call last):
  File "./test.py", line 3, in <module>
    with mod:
AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)

根据文档文档,该with语句应如下执行(我相信它在步骤2失败,因此截断列表):

  1. 评估上下文表达式(with_item中给出的表达式)以获取上下文管理器.
  2. __exit__()加载上下文管理器以供以后使用.
  3. __enter__()调用上下文管理器的方法.
  4. 等等...

据我所知,没有理由找不到原因__exit__.是否有一些我错过了使模块无法作为上下文管理器工作的东西?

python python-module with-statement contextmanager python-3.x

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

Python:无法找到并安装python模块'video'

我使用的是Python 3.6.我试图运行OpenCV光流代码:https: //github.com/opencv/opencv/blob/master/samples/python/opt_flow.py

并且有一个错误:

ModuleNotFoundError: No module named 'video'
Run Code Online (Sandbox Code Playgroud)

我认为必须缺少"视频"模块.所以,我跑了

pip install video
Run Code Online (Sandbox Code Playgroud)

在命令行中,但它给了我这个错误:

Collecting video
  Could not find a version that satisfies the requirement video (from versions: )
No matching distribution found for video
Run Code Online (Sandbox Code Playgroud)

谁能建议如何解决这个问题?如何找到本地驱动器中安装的OpenCV模块的位置?

python opencv pip python-module computer-vision

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

pySerial AttributeError:模块'serial'没有属性'Serial'

我有Windows 7 64位和Python 3.6

我实际上是在挖掘整个网络来解决这个问题 - 而且没有什么可悲的.

AttributeError                            Traceback (most recent call last)
<ipython-input-150-80ee8bd5f0f2> in <module>()
----> serial.Serial()

AttributeError: module 'serial' has no attribute 'Serial'
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式解决这个问题: - 检查我的文件是否名为serial.py - 重新安装模块 - 首先,整个模块不起作用,现在只有它的功能. - 我不能使用它的任何功能,检查端口不起作用,没有什么工作. - 我检查了我的点 - 一切都很好,模块在文件夹site-pacages. - 如果我在pySerial文件中执行一些代码 - 它可以工作.但是没有serial.Serial或连接COM端口(我尝试这样做.)

python python-module pyserial

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

如何将所有模块移至新版本的Python(从3.6到3.7)

我刚刚升级到python 3.7,我意识到我所有的模块都停留在以前的版本中。甚至Django也不再被认可。如何将所有内容转移到新版本?我现在有点迷茫,甚至不知道新版本的安装位置。

编辑:

当我执行$ which python3.6此操作时,终端会告诉我它不存在,但是我在中有一个python3.6目录/usr/local/lib/,其中安装了所有模块。

在同一目录中,/usr/local/lib/我还有一个python3.7目录,其中安装了一些模块,但缺少许多模块。但是,当我python3.7在查找器中搜索文件时,它不会出现。当我这样做时$ which python3.7,路径/usr/local/bin与目录不一样。

任何人都可以看到发生了什么,知道如何将所有模块转移到python3.7吗?

python python-module updates package

5
推荐指数
3
解决办法
2683
查看次数