【问题标题】:2to3 makes multiple imports2to3 进行多次导入
【发布时间】:2014-02-01 13:42:03
【问题描述】:

我正在编写可移植到 python3 的 python2 代码(通过运行 2to3 during user installation)。

但 2to3 有时会进行多次导入:

-import urlparse
-import urllib
-import urllib2
+import urllib.parse
+import urllib.request, urllib.parse, urllib.error
+import urllib.request, urllib.error, urllib.parse

如何让 2to3 知道重复项?

【问题讨论】:

  • 你必须这样做吗?据我所知,导入标准库模块是没有副作用的,所以多次导入也没有坏处。
  • @Cairnarvon 好吧,我可以摆脱它,但我认为可能有更好的方法
  • 这显然不能直接回答您的问题,但您可以尝试通过 isort 模块传递 2to3 的结果。

标签: python python-3.x python-2to3


【解决方案1】:

这可能是http://www.diveinto.org/python3/porting-code-to-python-3-with-2to3.html的原因

具体来说,urllib库在python 2和python 3之间发生了变化,这里是具体的变化

Python 2                                Python 3
import urllib                           import urllib.request, urllib.parse, urllib.error
import urllib2                          import urllib.request, urllib.error
import urlparse                         import urllib.parse
import robotparser                      import urllib.robotparser   
from urllib import FancyURLopener       from urllib.request import FancyURLopener
from urllib import urlencode            from urllib.parse import urlencode
from urllib2 import Request             from urllib.request import Request
from urllib2 import HTTPError           from urllib.error import HTTPError 

据我所知,如果不进行某种解析,就无法避免这种情况-如果您想采用该方法,那么isort(如您的问题的 cmets 中所建议的那样)可能是您最好的选择。或者,您可以自己解析代码,或者只是接受您无法轻松解决此问题并且不太可能在您的代码中造成任何实际问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 2011-03-16
    • 1970-01-01
    • 2016-09-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多