2017-06-11 5 views
0

J'ai cherché sur Internet une solution pour importer correctement magic dans Windows 10 64 bits. J'ai trouvé this, mais je ne comprends pas la solution.Problèmes d'importation de magie sous Windows 64 bits

  1. Il est indiqué de copier deux DLL dans le chemin spécifié dans le système d'exploitation.

  2. Que signifie la commande ci-dessous?

    file_magic = magic.Magic(magic_file="c:\path\to\magic.mgc") 
    

La solution est la combinaison de 1 + 2? Ou juste 1? J'ai fait 1. Toujours avoir une erreur. (La 1ère erreur est résolu)

>>> import magic 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\magic.py", line 176, in <modu 
    raise ImportError('failed to find libmagic. Check your install 
ImportError: failed to find libmagic. Check your installation 

Erreur Deuxièmement, je reçois

>>> import magic 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\magic\__init__.py", line 1, in <module> 
    from . import ffi 
    File "C:\Python27\lib\site-packages\magic\ffi.py", line 27, in <module> 
    ext_package="magic") 
    File "C:\Python27\lib\site-packages\cffi\api.py", line 437, in verify 
    lib = self.verifier.load_library() 
    File "C:\Python27\lib\site-packages\cffi\verifier.py", line 113, in  load_library 
    self._compile_module() 
    File "C:\Python27\lib\site-packages\cffi\verifier.py", line 210, in _compile_module 
    outputfilename = ffiplatform.compile(tmpdir, self.get_extension()) 
    File "C:\Python27\lib\site-packages\cffi\ffiplatform.py", line 29, in compile 
    outputfilename = _build(tmpdir, ext, compiler_verbose) 
    File "C:\Python27\lib\site-packages\cffi\ffiplatform.py", line 55, in _build 
    dist.run_command('build_ext') 
    File "C:\Python27\lib\distutils\dist.py", line 972, in run_command 
cmd_obj.run() 
    File "C:\Python27\lib\site-packages\setuptools\command\build_ext.py", line 75, in run 
_build_ext.run(self) 
    File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run 
self.build_extensions() 
    File "C:\Python27\lib\distutils\command\build_ext.py", line 449, in build_extensions 
self.build_extension(ext) 
    File "C:\Python27\lib\site-packages\setuptools\command\build_ext.py", line 196, in build_extension 
_build_ext.build_extension(self, ext) 
    File "C:\Python27\lib\distutils\command\build_ext.py", line 499, 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\msvc.py", line 136, in msvc9_query_vcvarsall 
return EnvironmentInfo(arch, ver).return_env() 
    File "C:\Python27\lib\site-packages\setuptools\msvc.py", line 1097, in return_env 
[self.VCIncludes, 
    File "C:\Python27\lib\site-packages\setuptools\msvc.py", line 805, in VCIncludes 
return [os.path.join(self.si.VCInstallDir, 'Include'), 
    File "C:\Python27\lib\site-packages\setuptools\msvc.py", line 542, in VCInstallDir 
    raise distutils.errors.DistutilsPlatformError(msg) 
distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 9.0 is required.  Get it from http://aka.ms/vcpython27 

Répondre

0

Je pense que vous avez terminé avec succès l'étape 1. 2ème étape garder votre fichier magic.mgc (obtenu par clonage de libmagicwin64) quelque part accessible par le script python (dans le cas ci-dessous dossier C: \ Programmes \ libmagicwin64 \). alors vous pouvez utiliser comme ça ...

>>> import magic 
>>> file_magic = magic.Magic(magic_file="C:\Programs\libmagicwin64\magic.mgc") 
>>> print(file_magic.from_file("D:\Work Folder\mcabcaaug2016.pdf")) 
'PDF document, version 1.4' 
+0

Lorsque vous utilisez des barres obliques inverses ('\'), vous devez soit les doubler ou utiliser des chaînes brutes ('r "C: \ Programmes \ libmagicwin64 \ magic.mgc"' – cco

+0

Il travaille dans le cas des fenêtres; dans le cas de linux, lorsque vous utilisez des barres obliques inverses (\), vous devez les doubler ou utiliser des chaînes brutes (r "C: \ Programmes \ libmagicwin64 \ magic.mgc") –

+0

Cela ne fonctionne que par hasard, car si aucun caractère d'échappement est mis en correspondance, le caractère \ et le caractère suivant sont passés tels quels. Si le chemin contient '\ User', vous obtiendrez une erreur d'échappement Unicode. – cco