标签: python-module

在Python中检查模块而不使用异常

我可以在Python中检查一个模块,例如:

try:
  import some_module
except ImportError:
  print "No some_module!"
Run Code Online (Sandbox Code Playgroud)

但我不想使用try/except.有没有办法实现这个目标?(它应该适用于Python 2.5.x.)

注意:不使用try/except的原因是任意的,这只是因为我想知道是否有办法在不使用异常的情况下测试它.

python module python-module

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

Python:我的进程中导入了哪些模块?

如何获取已导入到我的流程中的模块列表?

python python-module

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

在python程序中合并第三方库的最佳实践是什么?

下午好.

我正在为我的工作编写一个中小型python程序.该任务要求我使用Excel库xlwtxlrd,以及用于查询Oracle数据库的库,名为cx_Oracle.我正在通过版本控制系统(即CVS)开发项目.

我想知道围绕python项目组织第三方库的标准方法是什么.库xlwt,xlrd和cx_Oracle是否应该存储在/ usr/local/lib/python这样的目录中,这个目录可能在PYTHONPATH中占有一席之地?或者,第三方库应该与项目的源代码包含在同一目录中,有效地"运出"项目,这样python脚本更加独立于平台.

我只是在寻找最佳实践,因为我来自Java并且是Python新手.

在此先感谢,
ktm

python python-module

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

为什么我的代码可以从交互式shell运行,但是从文件运行时却不行?

我正在尝试使用该pprint模块检查Python中的一些变量,我可以愉快地使用交互式shell和下面的代码:

import pprint
pp = pprint.PrettyPrinter()
stuff = ['cakes','bread','mead']
pp.pprint(stuff)
Run Code Online (Sandbox Code Playgroud)

但是,当我把上面的内容放入pprint.py并使用它运行时python pprint.py我得到错误:

$ python dev/pars/pprint.py 
Traceback (most recent call last):
  File "dev/pars/pprint.py", line 1, in ?
    import pprint
  File "/home/origina2/dev/pars/pprint.py", line 2, in ?
    pp = pprint.PrettyPrinter()
AttributeError: 'module' object has no attribute 'PrettyPrinter'
Run Code Online (Sandbox Code Playgroud)

与交互式shell相比,从文件运行Python代码时调用模块的方式有何不同?

python python-module python-interactive pprint

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

一个Python模块和包加载混乱

假设我有这样的事情:

.
??? run.py
??? test
    ??? __init__.py
    ??? models
    ?   ??? foo
    ?   ?   ??? baby.py
    ?   ?   ??? __init__.py
    ?   ??? __init__.py
    ?   ??? user.py
    ??? start.py

run.py

from test import start
Run Code Online (Sandbox Code Playgroud)

start.py

from .models import user
Run Code Online (Sandbox Code Playgroud)

user.py

from . import foo

print(foo.baby.Baby)
Run Code Online (Sandbox Code Playgroud)

baby.py

Baby = "I am a baby"
Run Code Online (Sandbox Code Playgroud)

现在,当你运行run.py文件时......

>>> python run.py
... traceback ...
AttributeError: 'module' object has no attribute 'baby'
Run Code Online (Sandbox Code Playgroud)

但是,如果你改变了start.py这样:

from .models.foo import baby
from .models import user
Run Code Online (Sandbox Code Playgroud)

一切正常. …

python python-module python-3.x

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

无法在Windows中安装mysql-python(较新版本)

mysql-python在我的机器上安装了v1.2.4(Windows 8).我使用的是Python 2.7.每次尝试升级到v1.2.5时,我总是得到以下错误.(从v1.3.7开始仍然发生)

C:\Users\User\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\
Run Code Online (Sandbox Code Playgroud)

9.0\VC\Bin\cl.exe/c/nologo/Ox/MD/W3/GS-/DNDEBUG -Dversion_info =(1,2,5,'fi nal',1)-D__version __ = 1.2.5"-IC :\ Program Files(x86)\ MySQL\MySQL Connector C 6. 0.2\include"-Ic:\ python27\include -Ic:\ python27\PC /Tc_mysql.c /Fobuild\temp.wi n32-2.7\Release_mysql.obj/zl _mysql.c _mysql.c(42):致命错误C1083:无法打开包含文件:'config-win.h':没有这样的文件或目录错误:命令'C:\ Users\User\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\cl.exe'失败,退出状态为2

----------------------------------------   Rolling back uninstall of mysql-python Command "c:\python27\python.exe -u -c "import
Run Code Online (Sandbox Code Playgroud)

setuptools,tokenize; file ='c:\\ users\user\appdata\local\temp\pip-build-utz7of\MySQL-python\setup.py'; ex ec(compile(getattr(tokenize,'open',open)(file) .read().replace('\ r \n','\n'),file,'exec'))"install --record c:\ users\user\appdata\local\temp\pip-osy _cg- record\install-record.txt --single-version-external-managed --compile"fai led with error code 1 in c:\ users\user\appdata\local\temp\pip-build-utz7of\MySQL -python \

我已经尝试过(并且没有工作):

  1. 安装VS2010
  2. 改变Python路径 …

python mysql python-module mysql-python python-2.7

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

你如何阅读Python模块的源代码?

我试图理解一些内置的Python模块是如何工作的.

例如,使用代码:

from Tkinter import *
root = Tk()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

功能的定义在哪里Tk

我一直在搜索tkinter源代码但找不到它.代码几次调用import Tkinter也很奇怪,因为这 Tkinter,为什么它自己导入?

希望有人能帮助解决我的困惑

python tkinter python-module python-import

3
推荐指数
2
解决办法
591
查看次数

python3模块导入/命名困境

我刚刚完成了一个用于Linux的小型all-python3 gpio模块gpiolib.我玩弄了两种不同的方法来命名和导入客户端中的东西:

1

gpio.py

class GPIOInput(object):
    ...

class GPIOEvent(object):
    ...

class GPIOOutput(object):
    ...
Run Code Online (Sandbox Code Playgroud)

client.py

from gpio import GPIOEvent, GPIOOutput, GPIOInput

irq = GPIOEvent(1, 14)
Run Code Online (Sandbox Code Playgroud)

2

gpio.py

class Input(object):
    ...

class Event(object):
    ...

class Output(object):
    ...
Run Code Online (Sandbox Code Playgroud)

client.py

import gpio

irq = gpio.Event(1, 14)
Run Code Online (Sandbox Code Playgroud)

问题:是否有一个好的/具体的理由选择一个而不是另一个?或者只是偏好?

没有(对我来说)真正的快乐混合体.我喜欢在模块内部作用域时的短名称,但如果在模块外部使用,则确实需要模块名称来限定它们的含义.但是导入gpio,然后引用gpio.GPIOOutput似乎是多余的.

python python-module naming-conventions python-3.x

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

Python全局导入for循环(最好是Python 3.x)

我的代码是这样的:

for module in ["ffmpy","os","sys"]:
    try:
        __import__(module)
    except:
        print("Can't import ["+module+"]")
Run Code Online (Sandbox Code Playgroud)

所以,我想全局导入它,但它似乎没有这样做.在这段代码之后,我有sys.path.insert(0, r"C:\Users\david\Desktop\scripts"),并且python控制台告诉我:NameError: name 'sys' is not defined.我不知道我做错了什么,但你希望这样做.

编辑:这个问题不重复,因为我不只是想从字符串导入,而是从for循环中执行.我基本上想要从一个循环中的字符串全局导入.

python python-module python-import python-3.x python-3.7

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

如何创建返回另一个模块的python模块

我正在尝试使python模块在导入时的行为与另一个模块完全相同。

python>
import foo
import fake_foo

help(foo) == help(fake_foo)

Run Code Online (Sandbox Code Playgroud)

我需要这样做是因为我需要在fake_foo模块内部添加一些额外的代码mafic代码,以便从另一个位置动态加载实际模块。

如果不清楚,下面的代码由于明显的原因不能正常工作:load_source确实返回了模块,但是它不能告诉python将其加载到当前模块。

# fake_foo/__init__.py

import imp
imp.load_source('foo', '/path/to/foo')
Run Code Online (Sandbox Code Playgroud)

一个非常重要的要求是,我无法控制人们的导入方式fake_foo,无法修改执行导入的代码,我需要在假模块内部进行整个实现。

PS。我将需要与py27,py35 +一起工作的代码,这很可能需要不同的逻辑,但是一旦我将其用于一个版本,应该不难为其他版本找到类似的方法。

python python-module python-import

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