Я запускаю python 2.7.3 в системе с анакондой. Я недавно ГПГ, установлен и когда Архив Интернета я запустить программу установки из командной строки Я вижу:Ошибка: нет модуля с именем os.uname под python 2.7
AttributeError: 'module' object has no attribute 'uname'
Я также попытался это внутри простоя командной строки питона. Модуль загружается нормально, но я получаю ту же ошибку. По-видимому os.uname() отсутствует моей установки, так как она описана как часть зева в питон здесь: https://docs.python.org/2/library/os.html#os.uname
Моя установка:
>>> import os
>>> dir(os)
[ 'F_OK', 'O_APPEND', «O_BINARY 'O_CREAT', 'O_EXIT', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY' «P_DETACH», «P_NOWAIT», «P_NOWAITO», «P_OVERLAY», «P_WAIT», «R_OK», «SEEK_CUR», «SEEK_END», «SEEK_SET», «TMP_MAX», «UserDict», «W_OK», «X_OK» ',' _Environ ',' все ',' встроенные ',' документ», 'файл', 'имя', 'пакет', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result' , '_pickle_stat_result', '_pickle_statvfs_result', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'curdir', 'defpath', 'devnull', ' dupl ',' dup2 ',' environ ',' errno ',' error ',' execl ',' execle ',' execlp ',' execlpe ',' execv ',' execve ',' execvp ',' execvpe ' , 'extsep', 'fdopen', 'fstat', 'fsync', 'getcwd', 'getcwdu', 'getenv', 'getpid', 'isatty', 'kill', 'lineep', 'listdir', ' lseek ',' lstat ',' makedirs ',' mkdir ',' name ',' open ',' pardir ',' path ',' pathsep ',' pipe ',' popen ',' popen2 ',' popen3 ' , 'popen4', 'putenv', 'read', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'spawnl', 'spawnle', 'spawnv', ' «sppveve», «startfile», «stat», «stat_float_times», «stat_result», «statvfs_result», «strerror», «sys», «system», «tempnam», «times», «tmpfile», «tmpnam» ',' unlink ',' unsetenv ',' urandom ',' utime ',' waitpid ',' walk ',' write ']
Все остальное в python кажется прекрасным и было. Где я неправ? Есть ли версия python.os, которой не хватает uname? Я на машинке для окон; это проблема?
Вот соответствующий код в модуле (session.py в Архив Интернета):
def _get_user_agent_string(self):
"""Generate a User-Agent string to be sent with every request."""
uname = os.uname()
try:
lang = locale.getlocale()[0][:2]
except:
lang = ''
py_version = '{0}.{1}.{2}'.format(*sys.version_info)
return 'internetarchive/{0} ({1} {2}; N; {3}; {4}) Python/{5}'.format(
__version__, uname[0], uname[-1], lang, self.access_key, py_version)
... <elsewhere> ...
self.headers['User-Agent'] = self._get_user_agent_string()
Так кажется, что (как уже упоминалось в приведенном ниже ответе) кодировщик был ленив и не сделать это Windows- совместимы. Они поставляют в API API «self.headers» [User-Agent], и он должен работать с любой строкой, которую я предоставляю. Поэтому я могу взломать это.
Так это ошибка в модуле python internetarchive, который не имеет оговорок для оконных машин? –
Его не под окнами, потому что в окнах нет команды 'uname'. Unix-системы предоставляют эту команду, позволяя Python вызывать ее и получать ее результат. – aluriak