在Windows上构建cextendedpython包

2024-09-30 12:16:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在带有64位Python版本机器的64位Windows上构建'nwalign'Python包。 (包可以在这里找到:https://pypi.python.org/pypi/nwalign/?)你知道吗

我试着用python构建和安装设置.py在Python2.7和3.6中安装“the package both in Python2.7 and 3.6 but I get the following linkage error(I've replaced some info by”“…”):

(C:\...Anaconda3\envs\Python2) C:\...Desktop\nwalign-0.3.1>python setup.py 
...
building 'nwalign/cnwalign' extension
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
creating build\temp.win-amd64-2.7\Release\nwalign
C:\...AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\...Anaconda3\envs\Python2\lib\site-packages\numpy\core\include -Inwalign -IC:\...Anaconda3\envs\Python2\include -IC:\...Anaconda3\envs\Python2\PC /Tcnwalign/cnwalign.c /Fobuild\temp.win-amd64-2.7\Release\nwalign/cnwalign.obj
cnwalign.c
c:\...anaconda3\envs\python2\lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(12) : Warning Msg: Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
...
nwalign/cnwalign.c(7433) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
C:\...AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\...Anaconda3\envs\Python2\libs /LIBPATH:C:\...Anaconda3\envs\Python2\PCbuild\amd64 /LIBPATH:C:\...Anaconda3\envs\Python2\PC\VS9.0\amd64 /EXPORT:initnwalign/cnwalign build\temp.win-amd64-2.7\Release\nwalign/cnwalign.obj /OUT:build\lib.win-amd64-2.7\nwalign\cnwalign.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\nwalign\cnwalign.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\nwalign\cnwalign.pyd.manifest
LINK : error LNK2001: unresolved external symbol initnwalign/cnwalign
build\temp.win-amd64-2.7\Release\nwalign\cnwalign.lib : fatal error LNK1120: 1 unresolved externals
error: command 'C:\\...AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\link.exe' failed with exit status 1120

那个设置.py文件:

from setuptools import setup, find_packages
from distutils.extension import Extension
#from Cython.Distutils import build_ext

version = '0.3.1'
import numpy
np_include = numpy.get_include()
try:
    import nwalign
    doc = nwalign.__doc__
except:
    doc = ""

setup(name='nwalign',
      version=version,
      description="Needleman-Wunsch global sequence alignment",
      long_description=doc,
      ext_modules=[ Extension("nwalign/cnwalign",
                      sources=["nwalign/cnwalign.c"],
                      include_dirs=[np_include, "nwalign"])],
      keywords='sequence bioinformatics alignment needleman-wunsch',
      url='http://bitbucket.org/brentp/biostuff/',
      #download_url='http://bitbucket.org/brentp/biostuff/get/tip.tar.gz',
      author='brentp',
      author_email='bpederse@gmail.com',
      license='BSD',
      test_suite='nose.collector',
      include_package_data=True,
      zip_safe=False,
      packages=['nwalign'],
      #package_dir={'': 'nwalign'},
      package_data = {'nwalign': ['*.pyx', "*.c"]},
      install_requires=[
          'numpy', 'cython'
      ],
      entry_points= {
          # -*- Entry points: -*-
          'console_scripts': ['nwalign = nwalign:main']
          },
    classifiers   = [
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Scientific/Engineering :: Bio-Informatics',
        'Topic :: Scientific/Engineering',
        'Topic :: Text Processing'
        ],
)

我曾尝试使用适当的bat文件将MSCV编译器定向到64位,但未能缓解此问题。(我在终端的‘E*EM>C++:…\AppDATABOR\Studio\\Python \\Visual C++中从Python’9’EME>' E/P>中运行了VCVALSALDAMD64 < EEM >”。

另一个nwalign用户在这里https://bitbucket.org/brentp/biostuff/issues/1/instalation-issue提出的相同问题和相关解决方案(更改.def文件并删除导出)对我不起作用,因为我的生成没有创建.def文件,只有cnwalign.obj公司. 你知道吗

有什么想法吗?你知道吗


Tags: orgimportbuildnumpyreleaseincludelibwin
1条回答
网友
1楼 · 发布于 2024-09-30 12:16:50

问题是因为[MSDN]: /EXPORT (Exports a Function)链接器指令使用不正确(/EXPORT:initnwalign/cnwaligninitnwalign/cnwalign不是有效的函数标识符)。
这(很容易看出)是由扩展名触发的:nwalign/cnwalign。你知道吗

引用Python2.7.13扩展.py文件(%PYTHON2.7.13\u INSTALL\u DIR%\Lib\distutils)\扩展.py:31(部分class Extension):

Instance attributes:
   name : string
     the full name of the extension, including any packages ie.
*not* a filename or pathname, but Python dotted name

所以,在设置.py,修改Extension的实例化方式,来自:

ext_modules=[ Extension("nwalign/cnwalign",

收件人:

ext_modules=[ Extension("nwalign.cnwalign",

应该避免错误,并构建.pyd。你知道吗

相关问题 更多 >

    热门问题