2014-09-30 4 views
4

У меня есть файл с именем hello.txt в локальном каталоге вдоль стороны test.py, который содержит этот Python 3.4 код:Как преодолеть Python 3.4 NameError: имя «basestring» не определен

import easywebdav 
webdav = easywebdav.connect('192.168.1.6', username='myUser', password='myPasswd', protocol='http', port=80) 
srcDir = "myDir" 
webdav.mkdir(srcDir) 
webdav.upload("hello.txt", srcDir) 

Когда я запускаю это я получаю это:

Traceback (most recent call last): 
    File "./test.py", line 196, in <module> 
    webdav.upload("hello.txt", srcDir) 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/easywebdav/client.py", line 153, in upload 
    if isinstance(local_path_or_fileobj, basestring): 
NameError: name 'basestring' is not defined 

погуглить это приводит несколько хитов, все из которых point в таком же положении, которое, в случае пути переехал в будущем, будет включать «сразу после импорта во ":

try: 
    unicode = unicode 
except NameError: 
    # 'unicode' is undefined, must be Python 3 
    str = str 
    unicode = str 
    bytes = bytes 
    basestring = (str,bytes) 
else: 
    # 'unicode' exists, must be Python 2 
    str = str 
    unicode = unicode 
    bytes = str 
    basestring = basestring 

Я не использовал типы импорта, но включить его или нет, похоже, не имеет значения в PyDev - я получаю ошибку в любом случае. Линия, которая вызывает ошибку:

unicode = unicode 

говоря, «неопределенная переменная».

ОК, мои знания python колеблются в этот момент, и я искал похожие сообщения на этом сайте и не нашел достаточно одного достаточно для basestring, который я понимаю, чтобы помочь. Я знаю, что мне нужно указать basestring, но я не знаю, как это сделать. Кто-нибудь будет достаточно благотворительным, чтобы указать мне в правильном направлении?

+0

Какую версию 'easywebdav' вы используете? – ooga

+0

easywebdav 1.2.0 – volvox

ответ

2

Вы можете изменить easywebdav это client.py файл как два верхних изменений в этом фиксированием: https://github.com/hhaderer/easywebdav/commit/983ced508751788434c97b43586a68101eaee67b

Изменения состоят в замене basestring на str в client.py.

+0

В качестве короткой заметки всем, кто в этой ситуации, с указанным выше, помните webdav.upload ('local/path/to/file', 'remote/target/* file *'). Не забывайте имя файла назначения, даже если оно то же самое. – volvox

+0

Мертвая ссылка. Не могли бы вы привести еще один пример? – opyate

+0

https://github.com/amnong/easywebdav/commit/983ced508751788434c97b43586a68101eaee67b – thebjorn