小编ryp*_*pel的帖子

为什么导入错误在第二次导入时更改为"无法导入名称"?

这是一个神秘的python问题:

我正在开发一个python包,偶尔会报告导入错误ImportError: cannot import name ….一般不能导入的模块

  • 是可以进口的
  • 没有任何循环导入问题(我可以检测到).

通过这个简单的例子,我能够重现类似的效果:

mypkg/__init__.py:

    from . import module_a
    yarg  ## cause import error
Run Code Online (Sandbox Code Playgroud)

mypkg/module_a.py:

    print "imported module_a"
Run Code Online (Sandbox Code Playgroud)

现在我将尝试两次导入包.请注意,第二次导入时错误发生了变化:

>>> import mypkg
Module A imported
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mypkg/__init__.py", line 2, in <module>
    yarg
NameError: name 'yarg' is not defined
>>> import mypkg
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mypkg/__init__.py", line 1, in <module>
    from . …
Run Code Online (Sandbox Code Playgroud)

python python-import importerror

11
推荐指数
1
解决办法
7097
查看次数

easy_install-2.7问题

安装easy_install并尝试使用它然后安装python包后,它就失败了.

[root@server]# easy_install-2.7 pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Download error on http://pypi.python.org/simple/pip/: unknown url type: https -- Some packages may not be found!
Run Code Online (Sandbox Code Playgroud)

我似乎得到了一个重定向

curl -IL http://pypi.python.org/simple/pip/
HTTP/1.1 301 Moved Permanently
Retry-After: 0
Location: https://pypi.python.org/simple/pip/
Content-Length: 0
Accept-Ranges: bytes
Date: Tue, 12 Nov 2013 10:28:40 GMT
Age: 0
Connection: close

HTTP/1.1 200 OK
Date: Tue, 12 Nov 2013 10:28:40 GMT
Content-Type: text/html; charset=utf-8
X-PYPI-LAST-SERIAL: 835141
Cache-Control: max-age=86400, public
Strict-Transport-Security: max-age=31536000
Content-Length: 3933
Accept-Ranges: bytes
Age: 78434
Vary: Accept-Encoding
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 …

python pip easy-install python-2.7

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

在Python 2.5中使用Python 2.6子进程模块

我想使用Python 2.6的子进程版本,因为它允许Popen.terminate()函数,但我坚持使用Python 2.5.在我的2.5代码中使用较新版本的模块是否有一些相当干净的方法?某种from __future__ import subprocess_module

python subprocess python-2.5

10
推荐指数
2
解决办法
4495
查看次数

在Python中使用子进程的Shell管道

我在使用Python调用shell命令时读取了我在StackOverflow上找到的每个线程subprocess,但我找不到适用于我的情况的答案:

我想从Python中执行以下操作:

  1. 运行shell命令command_1.收集变量中的输出result_1

  2. Shell管道 result_1进入command_2并收集输出result_2.换句话说,command_1 | command_2 使用在之前的步骤中运行时获得的结果运行command_1

  3. 将相同的管道result_1输入第三个命令command_3并收集结果result_3.

到目前为止,我尝试过:

p = subprocess.Popen(command_1, stdout=subprocess.PIPE, shell=True)

result_1 = p.stdout.read();

p = subprocess.Popen("echo " + result_1 + ' | ' + 
command_2, stdout=subprocess.PIPE, shell=True)

result_2 = p.stdout.read();
Run Code Online (Sandbox Code Playgroud)

原因似乎是"echo " + result_1 不能模拟获得管道命令输出的过程.

这是否可以使用子进程?如果是这样,怎么样?

python shell subprocess pipe

9
推荐指数
1
解决办法
1671
查看次数

Python子进程参数

例如我正在使用ffplay并希望运行此命令-bufsize[:stream_specifier] integer (output,audio,video)

目前我有这个:

subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])
Run Code Online (Sandbox Code Playgroud)

但这说它无效.

python subprocess command-line-arguments

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

Python:无法导入urandom模块(OS X)

我很惭愧地问这样一个问题,但我已经尝试了几个小时......似乎我不能让我的python版本做随机的事情了.更确切地说,它缺少模块urandom.

首先,这里有一些关于我的系统的信息:

  • OSX版本:10.7.4
  • python版本:Python 2.7.1
  • which python: /opt/local/bin/python
  • import os; os: <module 'os' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
  • echo $PATH: /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
  • $ENV并且$PYTHONPATH是空的

现在,当我有更深入的了解时vim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py,我可以看到这个文件需要urandom:

line 47: from os import urandom as _urandom
Run Code Online (Sandbox Code Playgroud)

所以,从逻辑上讲,我尝试运行时失败了:

>>> import random
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 47, in <module>
    from os import urandom as _urandom
ImportError: cannot import name urandom
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?urandom应该居住在哪里?到目前为止,我一直在谷歌搜索没有成功.
似乎很多Ubuntu用户都使用virtualenv这个问题,但我没有使用virtualenv,而且我没有使用Ubuntu.我敢打赌,我的PATH或PYTHONPATH或ENV变量设置不正确,但我不知道如何解决这个问题.

python python-import importerror

9
推荐指数
1
解决办法
4359
查看次数

Ubuntu将目录添加到Python路径

我想在我的ubuntu机器(corgy工具)上运行用python编写的第三部分工具.

但是我不知道如何在Python路径中添加其他模块.

cat doc/download.rst         
There is currently no setup.py, so you need to manually add
the download directory to your PYTHON_PATH environment variable.
Run Code Online (Sandbox Code Playgroud)

如何将目录添加到PYTHON_PATH?

我试过了:
export PYTHON_PATH=/home/user/directory:$PYTHON_PATH && source .bashrc
export PATH=/home/user/directory:$PATH && source .bashrc

python
import sys
sys.path.append("/home/user/directory/")

但是,当我尝试运行此工具时,我得到:

Traceback (most recent call last):
File "examples/dotbracket_to_bulge_graph.py", line 4, in <module>
import corgy.graph.bulge_graph as cgb
ImportError: No module named corgy.graph.bulge_graph
Run Code Online (Sandbox Code Playgroud)

python ubuntu importerror

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

LXML:无法导入etree

我去了这个页面并下载了tar文件: http://pypi.python.org/pypi/lxml/2.3.4#downloads

然后我将lxml文件夹复制到我的Python26/Lib文件夹中.现在,当我去解释器并键入from lxml import etree我得到错误:cannot import etree.有人知道出了什么问题吗?我正在运行Windows.

python lxml html-parsing python-import

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

避免在pandas str.replace中使用正则表达式

我有以下pandas数据帧.为简单起见,我们假设它只有两列:idsearch_term

id       search_term
37651    inline switch
Run Code Online (Sandbox Code Playgroud)

我做:

train['search_term'] = train['search_term'].str.replace("in."," in. ")
Run Code Online (Sandbox Code Playgroud)

期望上面的数据集不受影响,但我得到了这个数据集的回报:

id       search_term
37651    in.  in.  switch
Run Code Online (Sandbox Code Playgroud)

这意味着inl被替换为in.,ine并被替换为in.,好像我使用正则表达式,其中dot表示任何字符.

如何重新设置第一个命令,以便字面上in.替换为in.任何in未跟随点的任何一个命令,如下所示:

a = 'inline switch'
a = a.replace('in.','in. ')

a
>>> 'inline switch'
Run Code Online (Sandbox Code Playgroud)

python regex string replace pandas

8
推荐指数
2
解决办法
1173
查看次数

PyCharm 文件大小超出配置限制 (2.56 MB),代码洞察功能不可用

我正在处理一些大的 txt 文件(有些大约 3 GB),每当我必须检查 txt 文件时,消息“文件大小超出配置的限制(2.56 MB),代码洞察功能不可用”出现在顶部文件中,我尝试通过转到Help->Edit自定义属性然后在打开的文件中添加下一行代码来更改文件大小

idea.max.content.load.filesize=500000
Run Code Online (Sandbox Code Playgroud)

问题是,即使关闭并重新打开 PyCharm 后也会出现相同的消息,我需要做其他事情吗?只需编写该行代码就足以更改文件大小?,它不需要像普通代码一样运行?如果是这样,由于没有出现该选项,我该如何运行它?

size file pycharm

8
推荐指数
1
解决办法
6114
查看次数