6

我正在编写对于 python3 也可移植的 python2 代码(通过在用户安装期间运行 2to3)。

但 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 知道重复项?

4

1 回答 1

0

这可能是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(如您对问题的评论中所建议的那样)可能是您最好的选择。或者,您可以自己解析代码,或者只是接受您无法轻松解决此问题并且不太可能在您的代码中导致任何实际问题。

于 2014-02-14T18:01:37.113 回答