相关疑难解决方法(0)

如何导入标准库模块而不是本地目录?

我有一个名为"calendar"的本地目录,其中包含"__init__.py"文件.

我希望"导入日历"导入标准库模块日历,而不是我本地目录定义的模块.

我已经尝试过"从__future__ import absolute_import"并改变PYTHONPATH.

有很好的理由我不能只重命名目录.真.

python

10
推荐指数
1
解决办法
1862
查看次数

Python导入阴影在3.4.6和3.5.2之间不同

版本3.4.6和3.5.2之间的Python导入阴影似乎不同:

$ cat time.py
from time import time
$ pyenv global 3.4.6
$ python -V
Python 3.4.6
$ python time.py 
Traceback (most recent call last):
  File "time.py", line 1, in <module>
    from time import time
  File "/home/vagrant/tmp/time.py", line 1, in <module>
    from time import time
ImportError: cannot import name 'time'
$ pyenv global 3.5.2 
$ python -V
Python 3.5.2
$ python time.py
$ echo no error
no error
Run Code Online (Sandbox Code Playgroud)

问题1:为什么......那些东西?

问题2:更新日志中有什么内容吗?我找不到任何东西......

python import shadowing python-internals

7
推荐指数
1
解决办法
230
查看次数

在python中使用absolute_import并处理相对模块名称冲突

我真的希望这是一个简单的例子,让我想念复杂的Python2导入机制.我有以下设置:

$> ls -ltr pypackage1 
total 3
-rw-r--r-- 1 pelson pelson   0 Aug 17 19:20 io.py
-rw-r--r-- 1 pelson pelson   0 Aug 17 19:20 __init__.py
-rw-r--r-- 1 pelson pelson  57 Aug 17 19:22 code.py
$> cat pypackage1/code.py 
from __future__ import absolute_import

import zipfile
Run Code Online (Sandbox Code Playgroud)

即我只是一个存根包空__init__.pyio.py和2号线code.py的文件.

我可以导入pypackage1:

$> python -c "import pypackage1.code"
Run Code Online (Sandbox Code Playgroud)

但我无法运行该code.py文件:

$> python pypackage1/code.py
Traceback (most recent call last):
  File "pypackage1/code.py", line 3, in <module>
    import zipfile
  File "python2.7/zipfile.py", line …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

6
推荐指数
1
解决办法
4026
查看次数

在python中导入模块时如何避免一直写出模块的名称?

math最近经常使用这个模块.我不想写math.sqrt(x)math.sin(x)所有的时间.我想缩短它并写sqrt(x)sin(x).怎么样?

python import module

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

导入与文件同名的模块

我想将日志记录https://docs.python.org/3/library/logging.html导入到名为 logging.py 的文档中。但是,当我尝试导入 logging.handlers 时,它失败了,因为我相信它是在文档中搜索处理程序函数,而不是从模块中导入。我该如何解决这个问题,以便它查找更高级别的日志记录而不是查看文件内部?

python import importerror

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

与现有模块同名的python模块名称

我在“ msa”命名空间下组织了许多小型utils模块,因此可以在许多不同的研究项目中使用。目前,我将它们组织成这样:

# folder structure:
packages  <-- in my pythonpath
--msa
----msa_utils.py
----msa_geom.py
----msa_pyglet.py
----msa_math.py
----etc

# imported and used this like
from msa import msa_pyglet
from msa import msa_math
msa_pyglet.draw_rect(msa_math.lerp(...))
Run Code Online (Sandbox Code Playgroud)

但是,我想避免名称中的“ msa_”,而是这样使用:

# folder structure:
packages  <-- in my pythonpath
--msa
----utils.py
----geom.py
----pyglet.py
----math.py
----etc

# imported and used this like
import msa.pyglet
import msa.math
msa.pyglet.draw_rect(msa.math.lerp(...))
Run Code Online (Sandbox Code Playgroud)

从外部导入时,这不会引起名称冲突,但是,当模块本身导入名称冲突的模块时,就会发生名称冲突。例如,msa / pyglet需要导入pyglet(外部的),但最终尝试导入自身。同样,任何尝试导入标准数学库的模块都只会导入我的数学模块。这都是可以理解的。但是,处理这种问题的常用pythonic方法是什么?我必须给每个模块文件一个全局唯一的名称吗?

python module

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

AttributeError:“模块”对象没有属性“ TextCalendar”

当我在Ideone中复制以下代码时,它可以正常运行,但未在文本编辑器中运行,并显示了本文中提到的错误:

import calendar   
c = calendar.TextCalendar(calendar.SUNDAY)
c.prmonth(2007, 7)
Run Code Online (Sandbox Code Playgroud)

完整的错误是:

Traceback (most recent call last):
  File "calendar.py", line 1, in <module>
    import calendar   
  File "/home/shl/Desktop/calendar.py", line 2, in <module>
    c = calendar.TextCalendar(calendar.SUNDAY)
AttributeError: 'module' object has no attribute 'TextCalendar'
Run Code Online (Sandbox Code Playgroud)

python calendar

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