Cygwin(mingw)を使用して、Windows 10でPython 3.5を使用してコードを実行しようとしています。正確には、PpriDSToolモジュールを使用しています。 Microsoft Visual Studio 2015を認識しないdistutils
で問題が発生しました。これを回避する方法はありますか(古いバージョンのPython、Windows、Visual Studioに戻ることなく)。 。
ValueError Traceback (most recent call last)
<ipython-input-16-bfeb915bfd7b> in <module>()
60 print("\n")
61
---> 62 testODE = Dopri_ODEsystem(DSargs)
63
64 print('Integrating...')
C:\Anaconda3\lib\site-packages\PyDSTool\Generator\Dopri_ODEsystem.py in __init__(self, kw)
371 print("stages using the makeLibSource and compileLib methods.")
372 else:
--> 373 self.makeLib()
374
375 @property
C:\Anaconda3\lib\site-packages\PyDSTool\Generator\mixins.py in makeLib(self, libsources, libdirs, include)
98 self.forceLibRefresh()
99 self.makeLibSource(include)
--> 100 self.compileLib(libsources, libdirs)
101
102 @property
C:\Anaconda3\lib\site-packages\PyDSTool\Generator\mixins.py in compileLib(self, libsources, libdirs)
78 precompiled libraries."""
79
---> 80 self._builder.build(libsources, libdirs, self._compiler)
81
82 def forceLibRefresh(self):
C:\Anaconda3\lib\site-packages\PyDSTool\Generator\mixins.py in build(self, libsources, libdirs, compiler)
187 script_args=script_args,
188 ext_modules=[extmod],
--> 189 py_modules=[self.modname])
190
191 def save_vfield(self, code, fname=None):
C:\Anaconda3\lib\site-packages\numpy\distutils\core.py in setup(**attr)
167 new_attr['distclass'] = NumpyDistribution
168
--> 169 return old_setup(**new_attr)
170
171 def _check_append_library(libraries, item):
C:\Anaconda3\lib\distutils\core.py in setup(**attrs)
146 if ok:
147 try:
--> 148 dist.run_commands()
149 except KeyboardInterrupt:
150 raise SystemExit("interrupted")
C:\Anaconda3\lib\distutils\dist.py in run_commands(self)
953 """
954 for cmd in self.commands:
--> 955 self.run_command(cmd)
956
957 # -- Methods that operate on its Commands --------------------------
C:\Anaconda3\lib\distutils\dist.py in run_command(self, command)
972 cmd_obj = self.get_command_obj(command)
973 cmd_obj.ensure_finalized()
--> 974 cmd_obj.run()
975 self.have_run[command] = 1
976
C:\Anaconda3\lib\site-packages\numpy\distutils\command\build_ext.py in run(self)
115 verbose=self.verbose,
116 dry_run=self.dry_run,
--> 117 force=self.force)
118 self.compiler.customize(self.distribution)
119 self.compiler.customize_cmd(self)
C:\Anaconda3\lib\site-packages\numpy\distutils\ccompiler.py in new_compiler(plat, compiler, verbose, dry_run, force)
594 raise DistutilsModuleError(("can't compile C/C++ code: unable to find class '%s' " +
595 "in module '%s'") % (class_name, module_name))
--> 596 compiler = klass(None, dry_run, force)
597 log.debug('new_compiler returns %s' % (klass))
598 return compiler
C:\Anaconda3\lib\site-packages\numpy\distutils\mingw32ccompiler.py in __init__(self, verbose, dry_run, force)
56
57 distutils.cygwinccompiler.CygwinCCompiler.__init__ (self, verbose,
---> 58 dry_run, force)
59
60 # we need to support 3.2 which doesn't match the standard
C:\Anaconda3\lib\distutils\cygwinccompiler.py in __init__(self, verbose, dry_run, force)
159 # Include the appropriate MSVC runtime library if Python was built
160 # with MSVC 7.0 or later.
--> 161 self.dll_libraries = get_msvcr()
162
163 def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
C:\Anaconda3\lib\distutils\cygwinccompiler.py in get_msvcr()
88 # return ['vcruntime140']
89 else:
---> 90 raise ValueError("Unknown MS Compiler version %s " % msc_ver)
91
92
ValueError: Unknown MS Compiler version 1900
私は次の変更を行い、次の構成で機能しました。
私は次のことをしました
C:\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64\bin
)gcc
が機能する(他のコンパイラはない)distutils.cfg
にC:\Python36\Lib\distutils
を作成しますそのファイルに行を追加します。
[build]
compiler = mingw32
手動で適用 このパッチ
vcruntime140.dll
を手動でダウンロードし、C:\Python36\libs
に入れるDistutilsおよびNumpy/Distutilsは現在、Visual Studio 2015、Visual C++ 14をサポートしていません。Python bug report からのヒントに従って、パッチを適用できましたWindows 7のMSYS2内で実行されているGCC 5.2.0を使用したAnacondaおよびMingw64のPython 3.5の新規インストールを使用して、必要なファイルと拡張機能を正常にビルドしました。 1つのdistutilsファイルと2つのnumpy/distutilsファイルにパッチを適用します(これが当てはまる場合)これらのパッチは、将来のリビジョンに含めるために提出されています。
パッチを自分で適用して簡単に修正できます。
[〜#〜] update [〜#〜]
上記のパッチは私のために機能しましたが、アップストリームに含めることは認められていません。 VS 2015に伴う変更は、私が感謝するよりも複雑です。
それでも誰かがこの問題を抱えている場合は、yowsupとpython-axolotlをインストールしているときに問題に遭遇しましたが、これを解決するためにこれを行いました:
1- Tharenのパッチをpython cygwinccompiler.pyファイル(pythonインストールフォルダーにあります) https:// bugs。 python.org/file40608/patch.diff
2-mingwを使用して、pexportsをインストールし、管理者モードでターミナルを開き、次を入力します。
mingw-get install pexports
2-pythonインストールフォルダーに移動します。私の場合はC:\ Program Files(x86)\ Python36-32です。
pythonインストールフォルダーに移動した後、pexportsのインストールに使用したのと同じ端末で次のコマンドを実行します。
pexports vcruntime140.dll >libs\vcruntime140.def
dlltool -dllname vcruntime140.dll --def libs\vcruntime140.def --output-lib libs\libvcruntime140.a
次に、ライブラリをインストールしていたフォルダーに戻るか、以前に何をしていたとしても、今は動作するはずです。
ところで、追加することを忘れないでください
[build]
compiler = mingw32
distutilsファイル内。
出典:この投稿と https://bugs.python.org/issue25251
私は同じ問題を実行していましたが、問題はmingwコンパイラーにあることがわかりました。 @tharenが提案したパッチを試しましたが、うまくいきませんでした。
CygwinのWindows用のお気に入りのコンパイラはビジュアルc ++のようです。そのため、 http://landinghub.visualstudio.com/visual-cpp-build-tools からビジュアルc ++ビルドツールのみをダウンロードし、それが機能しました。いいよ.
プロジェクトに含めたmingwとそれへのすべての参照をアンインストールする必要があることに注意してください。特に、私が作成したdistutils.cfgファイルを削除する必要がありました。このファイルには、mingwを指す次のコードが含まれていました。
[build]
compiler = mingw32
私は彼に次の変更を加えたところ、それは魅力のように機能しました!
場所にあるファイルdistutils.cfgを編集します。
Distutils.cfgの内容を次のように変更します。
[build]
compiler=g++
[build_ext]
compiler=g++
追伸おそらく2番目の場所でのみ変更することも必要です。
P.P.S gccがインストールされ、PATHにあることを確認してください。私のために、TDM-GCC-64がインストールされました