Installation von Bibliotheken ist eine Kunst

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Hallo Leute,

ich hatte aus Versehen die Bibliothek SQLAlchemy deinstalliert. Wie dem auch sei. Ich bin dann zu Python Package Index und habe mir die benötigte Bibliothek heruntergeladen und anschließend entpackt. Wie üblich habe ich mich mittels der Eingabeaufforderung (cmd) zum entsprechenden Ordner navigiert, und wollte SQLAlchemy isntallieren:
python setup.py install
Und als Fehlermeldung bekam ich folgendes (ich kopiere mal den kompletten Verlauf der Installation mit rein):
C:\Users\Übergang\Downloads\SQLAlchemy-1.0.10>python setup.py install
running install
running bdist_egg
running egg_info
writing lib\SQLAlchemy.egg-info\PKG-INFO
writing top-level names to lib\SQLAlchemy.egg-info\top_level.txt
writing dependency_links to lib\SQLAlchemy.egg-info\dependency_links.txt
reading manifest file 'lib\SQLAlchemy.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.jpg' under directory 'doc'
warning: no files found matching '*.mako' under directory 'doc'
warning: no files found matching 'distribute_setup.py'
warning: no files found matching 'sa2to3.py'
warning: no files found matching 'ez_setup.py'
no previously-included directories found matching 'doc\build\output'
writing manifest file 'lib\SQLAlchemy.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
running build_ext
building 'sqlalchemy.cprocessors' extension
Traceback (most recent call last):
File "setup.py", line 170, in <module>
run_setup(True)
File "setup.py", line 150, in run_setup
**kwargs
File "C:\Python27\Lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\Lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\setuptools\command\install.py", line 67, i
n run
self.do_egg_install()
File "C:\Python27\lib\site-packages\setuptools\command\install.py", line 109,
in do_egg_install
self.run_command('bdist_egg')
File "C:\Python27\Lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\setuptools\command\bdist_egg.py", line 161
, in run
cmd = self.call_command('install_lib', warn_dir=0)
File "C:\Python27\lib\site-packages\setuptools\command\bdist_egg.py", line 147
, in call_command
self.run_command(cmdname)
File "C:\Python27\Lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\setuptools\command\install_lib.py", line 1
0, in run
self.build()
File "C:\Python27\Lib\distutils\command\install_lib.py", line 111, in build
self.run_command('build_ext')
File "C:\Python27\Lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 67, in run
build_ext.run(self)
File "C:\Python27\Lib\distutils\command\build_ext.py", line 337, in run
self.build_extensions()
File "C:\Python27\Lib\distutils\command\build_ext.py", line 446, in build_exte
nsions
self.build_extension(ext)
File "setup.py", line 73, in build_extension
build_ext.build_extension(self, ext)
File "C:\Python27\Lib\distutils\command\build_ext.py", line 496, in build_exte
nsion
depends=ext.depends)
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\site-packages\setuptools\msvc9_support.py", line 52, in
query_vcvarsall
return unpatched['query_vcvarsall'](version, *args, **kwargs)
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 275, in query_vcvarsal
l
stderr=subprocess.PIPE)
File "C:\Python27\Lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "C:\Python27\Lib\subprocess.py", line 957, in _execute_child
startupinfo)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdc' in position 10:
ordinal not in range(128)

C:\Users\Übergang\Downloads\SQLAlchemy-1.0.10>
Also habe ich mich in Google umgesehen und fand dies hier: SQLAlchemy 1.0 Documentation. Scrollt am besten bis zum Kapitel Installing the C Extensions runter.

Ich führte die Installation wie folgt aus:
python setup.py --without-cextensions install
und es klappte dann. Was hat es auf sich? Soweit ich es verstanden habe, wird hierbei die c extensions nicht mit installiert. Aber meine Fehlermeldung lautete ja:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdc' in position 10:
ordinal not in range(128)
Irgendwie bin ich leicht verwirrt. Ich möchte euch deswegen belästigen, damit ich solche Fehler in Zukunft besser "verstehe".
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Der Fehler war fuer die Installation kein "pip" zu benutzen.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Sophus hat geschrieben:Ich bin dann zu Python Package Index und habe mir die benötigte Bibliothek heruntergeladen und anschließend entpackt. Wie üblich habe ich mich mittels der Eingabeaufforderung (cmd) zum entsprechenden Ordner navigiert, und wollte SQLAlchemy isntallieren:
python setup.py install
Das ist eigentlich nicht üblich. Der übliche Weg wäre der Befehl ``pip install sqlalchemy`` gewesen. Das sieht bei mir dann so aus:

Code: Alles auswählen

C:\Users\Sebastian>pip install sqlalchemy
Downloading/unpacking sqlalchemy
  Running setup.py (path:c:\users\sebast~1\appdata\local\temp\pip_build_Sebastian\sqlalchemy\setup.py) egg_info for package sqlalchemy

    warning: no files found matching '*.jpg' under directory 'doc'
    warning: no files found matching '*.mako' under directory 'doc'
    warning: no files found matching 'distribute_setup.py'
    warning: no files found matching 'sa2to3.py'
    warning: no files found matching 'ez_setup.py'
    no previously-included directories found matching 'doc\build\output'
Installing collected packages: sqlalchemy
  Running setup.py install for sqlalchemy
    building 'sqlalchemy.cprocessors' extension
    ***************************************************************************
    Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
    WARNING: The C extension could not be compiled, speedups are not enabled.
    Failure information, if any, is above.
    Retrying the build without the C extension now.
    ***************************************************************************

    warning: no files found matching '*.jpg' under directory 'doc'
    warning: no files found matching '*.mako' under directory 'doc'
    warning: no files found matching 'distribute_setup.py'
    warning: no files found matching 'sa2to3.py'
    warning: no files found matching 'ez_setup.py'
    no previously-included directories found matching 'doc\build\output'
    ***************************************************************************
    WARNING: The C extension could not be compiled, speedups are not enabled.
    Plain-Python build succeeded.
    ***************************************************************************
Successfully installed sqlalchemy
Cleaning up...
Er meckert zwar auch rum, dass kein Compiler installiert ist, aber er greift dann eben auf die reine Python-Implementierung der Bibliothek zurück. Insgesamt ist die Installation dann trotzdem erfolgreich. Probier diesen Befehl doch mal bei dir aus. Vielleicht hilft das schon weiter.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Achja, und wenn man die angegebene URL besucht (http://aka.ms/vcpython27), dann gelangt man auf eine Webseite von Microsoft, von der man ein speziell an Python 2.7 angepasstes Compiler-Bundle herunterladen kann. Damit gelangt dann auch die Installation der C-Extension. Es sollte dann der Befehl ``pip install --ignore-installed sqlalchemy`` verwendet werden, damit Pip auch bei einem bereits installierten SQLAlchemy den Installationsvorgang wiederholt.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@snafu: Ich habe mal deinen Rat befolgt, und versucht SQLAlchemy über pip zu installieren. Aber auch dort bekomme ich Fehlermeldungen. Die Installation wird nicht erfolgreich durchgeführt. Hier der Ausschnitt aus meiner Eingabeforderung (cmd) und der dazugehörige Verlauf der Installation:
C:\Users\Übergang>pip install sqlalchemy
copying lib\sqlalchemy\dialects\sybase\__init__.py -> build\lib.win32-2.7\sq
lalchemy\dialects\sybase
creating build\lib.win32-2.7\sqlalchemy\engine
copying lib\sqlalchemy\engine\base.py -> build\lib.win32-2.7\sqlalchemy\engi
ne
copying lib\sqlalchemy\engine\default.py -> build\lib.win32-2.7\sqlalchemy\e
ngine
copying lib\sqlalchemy\engine\interfaces.py -> build\lib.win32-2.7\sqlalchem
y\engine
copying lib\sqlalchemy\engine\reflection.py -> build\lib.win32-2.7\sqlalchem
y\engine
copying lib\sqlalchemy\engine\result.py -> build\lib.win32-2.7\sqlalchemy\en
gine
copying lib\sqlalchemy\engine\strategies.py -> build\lib.win32-2.7\sqlalchem
y\engine
copying lib\sqlalchemy\engine\threadlocal.py -> build\lib.win32-2.7\sqlalche
my\engine
copying lib\sqlalchemy\engine\url.py -> build\lib.win32-2.7\sqlalchemy\engin
e
copying lib\sqlalchemy\engine\util.py -> build\lib.win32-2.7\sqlalchemy\engi
ne
copying lib\sqlalchemy\engine\__init__.py -> build\lib.win32-2.7\sqlalchemy\
engine
creating build\lib.win32-2.7\sqlalchemy\event
copying lib\sqlalchemy\event\api.py -> build\lib.win32-2.7\sqlalchemy\event
copying lib\sqlalchemy\event\attr.py -> build\lib.win32-2.7\sqlalchemy\event

copying lib\sqlalchemy\event\base.py -> build\lib.win32-2.7\sqlalchemy\event

copying lib\sqlalchemy\event\legacy.py -> build\lib.win32-2.7\sqlalchemy\eve
nt
copying lib\sqlalchemy\event\registry.py -> build\lib.win32-2.7\sqlalchemy\e
vent
copying lib\sqlalchemy\event\__init__.py -> build\lib.win32-2.7\sqlalchemy\e
vent
creating build\lib.win32-2.7\sqlalchemy\ext
copying lib\sqlalchemy\ext\associationproxy.py -> build\lib.win32-2.7\sqlalc
hemy\ext
copying lib\sqlalchemy\ext\automap.py -> build\lib.win32-2.7\sqlalchemy\ext
copying lib\sqlalchemy\ext\baked.py -> build\lib.win32-2.7\sqlalchemy\ext
copying lib\sqlalchemy\ext\compiler.py -> build\lib.win32-2.7\sqlalchemy\ext

copying lib\sqlalchemy\ext\horizontal_shard.py -> build\lib.win32-2.7\sqlalc
hemy\ext
copying lib\sqlalchemy\ext\hybrid.py -> build\lib.win32-2.7\sqlalchemy\ext
copying lib\sqlalchemy\ext\instrumentation.py -> build\lib.win32-2.7\sqlalch
emy\ext
copying lib\sqlalchemy\ext\mutable.py -> build\lib.win32-2.7\sqlalchemy\ext
copying lib\sqlalchemy\ext\orderinglist.py -> build\lib.win32-2.7\sqlalchemy
\ext
copying lib\sqlalchemy\ext\serializer.py -> build\lib.win32-2.7\sqlalchemy\e
xt
copying lib\sqlalchemy\ext\__init__.py -> build\lib.win32-2.7\sqlalchemy\ext

creating build\lib.win32-2.7\sqlalchemy\ext\declarative
copying lib\sqlalchemy\ext\declarative\api.py -> build\lib.win32-2.7\sqlalch
emy\ext\declarative
copying lib\sqlalchemy\ext\declarative\base.py -> build\lib.win32-2.7\sqlalc
hemy\ext\declarative
copying lib\sqlalchemy\ext\declarative\clsregistry.py -> build\lib.win32-2.7
\sqlalchemy\ext\declarative
copying lib\sqlalchemy\ext\declarative\__init__.py -> build\lib.win32-2.7\sq
lalchemy\ext\declarative
creating build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\attributes.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\base.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\collections.py -> build\lib.win32-2.7\sqlalchemy\
orm
copying lib\sqlalchemy\orm\dependency.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\deprecated_interfaces.py -> build\lib.win32-2.7\s
qlalchemy\orm
copying lib\sqlalchemy\orm\descriptor_props.py -> build\lib.win32-2.7\sqlalc
hemy\orm
copying lib\sqlalchemy\orm\dynamic.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\evaluator.py -> build\lib.win32-2.7\sqlalchemy\or
m
copying lib\sqlalchemy\orm\events.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\exc.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\identity.py -> build\lib.win32-2.7\sqlalchemy\orm

copying lib\sqlalchemy\orm\instrumentation.py -> build\lib.win32-2.7\sqlalch
emy\orm
copying lib\sqlalchemy\orm\interfaces.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\loading.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\mapper.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\path_registry.py -> build\lib.win32-2.7\sqlalchem
y\orm
copying lib\sqlalchemy\orm\persistence.py -> build\lib.win32-2.7\sqlalchemy\
orm
copying lib\sqlalchemy\orm\properties.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\query.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\relationships.py -> build\lib.win32-2.7\sqlalchem
y\orm
copying lib\sqlalchemy\orm\scoping.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\session.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\state.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\strategies.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\strategy_options.py -> build\lib.win32-2.7\sqlalc
hemy\orm
copying lib\sqlalchemy\orm\sync.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\unitofwork.py -> build\lib.win32-2.7\sqlalchemy\o
rm
copying lib\sqlalchemy\orm\util.py -> build\lib.win32-2.7\sqlalchemy\orm
copying lib\sqlalchemy\orm\__init__.py -> build\lib.win32-2.7\sqlalchemy\orm

creating build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\annotation.py -> build\lib.win32-2.7\sqlalchemy\s
ql
copying lib\sqlalchemy\sql\base.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\compiler.py -> build\lib.win32-2.7\sqlalchemy\sql

copying lib\sqlalchemy\sql\crud.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\ddl.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\default_comparator.py -> build\lib.win32-2.7\sqla
lchemy\sql
copying lib\sqlalchemy\sql\dml.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\elements.py -> build\lib.win32-2.7\sqlalchemy\sql

copying lib\sqlalchemy\sql\expression.py -> build\lib.win32-2.7\sqlalchemy\s
ql
copying lib\sqlalchemy\sql\functions.py -> build\lib.win32-2.7\sqlalchemy\sq
l
copying lib\sqlalchemy\sql\naming.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\operators.py -> build\lib.win32-2.7\sqlalchemy\sq
l
copying lib\sqlalchemy\sql\schema.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\selectable.py -> build\lib.win32-2.7\sqlalchemy\s
ql
copying lib\sqlalchemy\sql\sqltypes.py -> build\lib.win32-2.7\sqlalchemy\sql

copying lib\sqlalchemy\sql\type_api.py -> build\lib.win32-2.7\sqlalchemy\sql

copying lib\sqlalchemy\sql\util.py -> build\lib.win32-2.7\sqlalchemy\sql
copying lib\sqlalchemy\sql\visitors.py -> build\lib.win32-2.7\sqlalchemy\sql

copying lib\sqlalchemy\sql\__init__.py -> build\lib.win32-2.7\sqlalchemy\sql

creating build\lib.win32-2.7\sqlalchemy\testing
copying lib\sqlalchemy\testing\assertions.py -> build\lib.win32-2.7\sqlalche
my\testing
copying lib\sqlalchemy\testing\assertsql.py -> build\lib.win32-2.7\sqlalchem
y\testing
copying lib\sqlalchemy\testing\config.py -> build\lib.win32-2.7\sqlalchemy\t
esting
copying lib\sqlalchemy\testing\distutils_run.py -> build\lib.win32-2.7\sqlal
chemy\testing
copying lib\sqlalchemy\testing\engines.py -> build\lib.win32-2.7\sqlalchemy\
testing
copying lib\sqlalchemy\testing\entities.py -> build\lib.win32-2.7\sqlalchemy
\testing
copying lib\sqlalchemy\testing\exclusions.py -> build\lib.win32-2.7\sqlalche
my\testing
copying lib\sqlalchemy\testing\fixtures.py -> build\lib.win32-2.7\sqlalchemy
\testing
copying lib\sqlalchemy\testing\mock.py -> build\lib.win32-2.7\sqlalchemy\tes
ting
copying lib\sqlalchemy\testing\pickleable.py -> build\lib.win32-2.7\sqlalche
my\testing
copying lib\sqlalchemy\testing\profiling.py -> build\lib.win32-2.7\sqlalchem
y\testing
copying lib\sqlalchemy\testing\provision.py -> build\lib.win32-2.7\sqlalchem
y\testing
copying lib\sqlalchemy\testing\replay_fixture.py -> build\lib.win32-2.7\sqla
lchemy\testing
copying lib\sqlalchemy\testing\requirements.py -> build\lib.win32-2.7\sqlalc
hemy\testing
copying lib\sqlalchemy\testing\runner.py -> build\lib.win32-2.7\sqlalchemy\t
esting
copying lib\sqlalchemy\testing\schema.py -> build\lib.win32-2.7\sqlalchemy\t
esting
copying lib\sqlalchemy\testing\util.py -> build\lib.win32-2.7\sqlalchemy\tes
ting
copying lib\sqlalchemy\testing\warnings.py -> build\lib.win32-2.7\sqlalchemy
\testing
copying lib\sqlalchemy\testing\__init__.py -> build\lib.win32-2.7\sqlalchemy
\testing
creating build\lib.win32-2.7\sqlalchemy\testing\plugin
copying lib\sqlalchemy\testing\plugin\bootstrap.py -> build\lib.win32-2.7\sq
lalchemy\testing\plugin
copying lib\sqlalchemy\testing\plugin\noseplugin.py -> build\lib.win32-2.7\s
qlalchemy\testing\plugin
copying lib\sqlalchemy\testing\plugin\plugin_base.py -> build\lib.win32-2.7\
sqlalchemy\testing\plugin
copying lib\sqlalchemy\testing\plugin\pytestplugin.py -> build\lib.win32-2.7
\sqlalchemy\testing\plugin
copying lib\sqlalchemy\testing\plugin\__init__.py -> build\lib.win32-2.7\sql
alchemy\testing\plugin
creating build\lib.win32-2.7\sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_ddl.py -> build\lib.win32-2.7\sqla
lchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_dialect.py -> build\lib.win32-2.7\
sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_insert.py -> build\lib.win32-2.7\s
qlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_reflection.py -> build\lib.win32-2
.7\sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_results.py -> build\lib.win32-2.7\
sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_select.py -> build\lib.win32-2.7\s
qlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_sequence.py -> build\lib.win32-2.7
\sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_types.py -> build\lib.win32-2.7\sq
lalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\test_update_delete.py -> build\lib.win3
2-2.7\sqlalchemy\testing\suite
copying lib\sqlalchemy\testing\suite\__init__.py -> build\lib.win32-2.7\sqla
lchemy\testing\suite
creating build\lib.win32-2.7\sqlalchemy\util
copying lib\sqlalchemy\util\compat.py -> build\lib.win32-2.7\sqlalchemy\util

copying lib\sqlalchemy\util\deprecations.py -> build\lib.win32-2.7\sqlalchem
y\util
copying lib\sqlalchemy\util\langhelpers.py -> build\lib.win32-2.7\sqlalchemy
\util
copying lib\sqlalchemy\util\queue.py -> build\lib.win32-2.7\sqlalchemy\util
copying lib\sqlalchemy\util\topological.py -> build\lib.win32-2.7\sqlalchemy
\util
copying lib\sqlalchemy\util\_collections.py -> build\lib.win32-2.7\sqlalchem
y\util
copying lib\sqlalchemy\util\__init__.py -> build\lib.win32-2.7\sqlalchemy\ut
il
running build_ext
building 'sqlalchemy.cprocessors' extension
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\bergan~1\appdata\local\temp\pip-build-ltiild\sqlalchemy\set
up.py", line 170, in <module>
run_setup(True)
File "c:\users\bergan~1\appdata\local\temp\pip-build-ltiild\sqlalchemy\set
up.py", line 150, in run_setup
**kwargs
File "C:\Python27\Lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\Lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "c:\python27\lib\site-packages\setuptools\command\install.py", line 6
1, in run
return orig.install.run(self)
File "C:\Python27\Lib\distutils\command\install.py", line 563, in run
self.run_command('build')
File "C:\Python27\Lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\Lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\Lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "c:\users\bergan~1\appdata\local\temp\pip-build-ltiild\sqlalchemy\set
up.py", line 67, in run
build_ext.run(self)
File "C:\Python27\Lib\distutils\command\build_ext.py", line 337, in run
self.build_extensions()
File "C:\Python27\Lib\distutils\command\build_ext.py", line 446, in build_
extensions
self.build_extension(ext)
File "c:\users\bergan~1\appdata\local\temp\pip-build-ltiild\sqlalchemy\set
up.py", line 73, in build_extension
build_ext.build_extension(self, ext)
File "C:\Python27\Lib\distutils\command\build_ext.py", line 496, in build_
extension
depends=ext.depends)
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 383, in initialize

vc_env = query_vcvarsall(VERSION, plat_spec)
File "c:\python27\lib\site-packages\setuptools\msvc9_support.py", line 52,
in query_vcvarsall
return unpatched['query_vcvarsall'](version, *args, **kwargs)
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 275, in query_vcva
rsall
stderr=subprocess.PIPE)
File "C:\Python27\Lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "C:\Python27\Lib\subprocess.py", line 957, in _execute_child
startupinfo)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdc' in position
10: ordinal not in range(128)

----------------------------------------
Command "c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\
\users\\bergan~1\\appdata\\local\\temp\\pip-build-ltiild\\sqlalchemy\\setup.py';
exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\
n'), __file__, 'exec'))" install --record c:\users\bergan~1\appdata\local\temp\p
ip-8b2lnt-record\install-record.txt --single-version-externally-managed --compil
e" failed with error code 1 in c:\users\bergan~1\appdata\local\temp\pip-build-lt
iild\sqlalchemy


C:\Users\Übergang>
Der letzte Teil wird in meiner cmd wirklich rot angezeigt.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@Sophus:
Wenn ich mal raten darf - die Setuproutine von SqlAlchemy kommt nicht mit dem 'Ü' in Deinem Pfadnamen klar.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@jerch: Heißt das jetzt für mich, dass ich jedesmal den Pfad wechseln muss oder gibt es eine Methode das Problem zu umgehen? So eine Art Unicode-Bibliothek, dir das Problem einfängt?
BlackJack

@Sophus: Keine Verzeichnisnamen mit komischen Zeichen ist da üblicherweise der Hinweis. Es gibt halt immer noch Software die mit so etwas nicht klar kommt.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@BlackJack: Das mit "Übergang" wurde von Windows eingerichtet. Ich weiß auch nicht weshalb. Denn mein Konto-Name ist "Sophus", und mit dem Konto melde ich mich auf meinem Win7 an.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Vielleicht reicht es auch aus TEMP auf einen Pfad ohne Sonderzeichen zu legen.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@jens: Ich habe über Umwege über mein Administrator-Konto die Benutzer neu erstellt. Jetzt gibt es unter C:/Users keinen Benutzer namens Übergang mehr. Und die Installation über pip klappt von nun an.

Ich finde es allerdings komisch, dass die Setup-Routine der Python-Bibliotheken in der heutigen Zeit immer noch nicht mit Sonderzeichen/Umlaute klar kommt. Immerhin habe ich jetzt pip 8.0.2 drauf. :K
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Glaub mir. Da gibt es einige Programme. Das Problem liegt meistens noch darin, dass die Fehlermeldungen, sofern es welche gibt, absolut nichtssagend sind.

Sodann habe ich die Umlaute meines Namens aus fast allen Verzeichnissen verbannt. Gut, dass meine Eltern so vorausschauend waren, mir einen ASCII-kompatiblen Vornamen zu geben ...
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Gut, dass meine Eltern so vorausschauend waren, mir einen ASCII-kompatiblen Vornamen zu geben ...
Aber wenn der RL Name der Person wie im obigen Beispiele wirklich "Übergang" ist, dann hat diese Person noch ein viel größeres Problem als Probleme mit der Installation von SQLAlchemy via pip ;-)

Gruß, noisefloor
BlackJack

Und es sind auch nicht nur ”exotische” Zeichen, auch Leerzeichen mögen so einige Programme nicht in Verzeichnis oder Dateinamen.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@BlackJack: Sowohl Linux (bei mir Debian 8) als auch Windows (bei mir Windows 7) lassen solche Ausnahmen zu. In beiden Systemen kann ich Ordner/Dateien mit Leerzeichen und Sonderzeichen erstellen - zumindest mit Umlaute. Um so mehr wundert mich, dass die Setup-Routine da Probleme hat. Und wenn ein Anwender mein Programm unter Linux verwenden will, kann ich schlecht sagen "Voraussetzung, ihr habt keine Umlaute in eurem Pfad, damit das SetupTool in der setup.py-Datei auch die entsprechenden Bibliotheken runterladen kann". Wäre bisschen anmaßend.
BlackJack

@Sophus: Es geht nicht darum ob das Betriebs- beziehungsweise Dateisystem einem ermöglicht ”Sonderzeichen” im allerweitesten Sinn zu verwenden, sondern ob andere Software so robust geschrieben ist, dass sie damit dann auch klar kommt. Ich würde Leerzeichen beispielsweise nicht als Sonderzeichen sehen, ist ja sogar in ASCII enthalten, und Unix-Dateisysteme lassen in der Regel fast jeden Bytewert für ein Zeichen in einem Datei- oder Verzeichnisnamen zu mit Ausnahme des Pfadtrenners und des Nullbytes. Die Erfahrung lehrt einen halt nur das Installationroutinen/-programme gerne mal auf die Nase fallen wenn etwas anderes in Pfadbestandteilen vorkommt als Buchstaben und Ziffern aus dem ASCII-Zeichensatz, und Unterstriche. Das so etwas 2016 noch ein Problem ist, mag traurig sein, aber leider Realität.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das Problem ist halt dass unter Linux Pfade äquivalent zu C Strings sind aber üblicherweise als utf-8 interpretiert werden mit möglichen Ausnahmen, unter OS X ist es Unicode in NFKD(?) und irgendeiner Kodierung unter Windows ist es irgendwas anderes mit zusätzlichen Restriktionen.

Es ist also schon grundsätzlich recht schwierig Pfade platformunabhängig darzustellen und es ist gar nicht so einfach zu beantworten was im Kontext von Pfaden Sonderzeichen sind. Das die meisten Programmiersprachen einschliesslich Python unglücklicherweise Pfade als Strings repräsentieren gibt dem ganzen dann den Rest. Jede (platformunabhängige) Anwendung die in irgendeiner Form Pfade verändert, erstellt oder ausgibt hat garantiert Fehler.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@BlackJack und @DasIch: Daher dachte ich, könnte man zum Beispiel in einer setup.py-Datei oder bei der pip-Installation mit Unicodes arbeiten. Man kann mit einem Python-Script über einem pip-Modul Bibliotheken installieren. Und daher überlegte ich, ob man solche Installations-Routinen irgendwie in Unicode verpacken kann, und diese dann der Routine übergeben kann. Das also der Pfad nicht als String sondern als Unicode durchgeht und somit keine Installations-Routine auf die Nase fällt.

Nur als Beispiel (den Quelltext habe ich hier gefunden):

Code: Alles auswählen

import pip

def install(package):
    pip.main(['install', unicode(package)])

# Example
if __name__ == '__main__':
    install('argh')
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das löst das Problem eben nicht weil Pfade keine Unicode Strings sind. Unicode Strings können mehr Zeichen enthalten als in Pfaden erlaubt ist und Pfade lassen sich unter Linux nicht unbedingt als Unicode Strings repräsentieren.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@DasIch: Mit anderen Worten, ich muss weiterhin in den sauren Apfel beißen und hoffen, dass der Anwender meines Programms Ahnung von Linux und der Installation hat bzw. sich dann mit der Problematik auseinander setzen kann, wenn die installations-Routine auf die Nase fällt? Was haben die Windows-Anwender für eine Erleichterung.
Antworten