2017-09-06 23 views
1

pyroot 2.7でbuildroot経由でsubprocess32をインストールしようとしています。正しくインストールするために登場したが、私は、組込みシステムにインポートするとき、私はエラーを取得する:サブプロセスをインポートする際の問題

>>> import subprocess32 
/usr/lib/python2.7/site-packages/subprocess32.py:472: RuntimeWarning: The _posixsubprocess module is not being used. Child process reliability may suffer if your pro 
gram uses threads. 
    "program uses threads.", RuntimeWarning) 

私はsubprocess32が、それは独自のバージョンだ持っているようだと、それはだ_posixsubprocess

import _posixsubprocess 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: dynamic module does not define init function (init_posixsubprocess) 

をインポートしようとした、このパスに続きこの場合は動作しませんか?ここで

は私のメイクファイルです:

############################################################# 
# 
# Subprocess32 module for python 
# 
############################################################# 

SUBPROCESS32_VERSION = 3.2.7 
SUBPROCESS32_SOURCE = subprocess32-$(SUBPROCESS32_VERSION).tar.gz 
SUBPROCESS32_SITE = https://pypi.python.org/pypi/subprocess32 

SUBPROCESS32_DEPENDENCIES = python 

define SUBPROCESS32_BUILD_CMDS 
     (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) 
endef 

define SUBPROCESS32_INSTALL_TARGET_CMDS 
     (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(TARGET_DIR)/usr) 
endef 

$(eval $(call GENTARGETS,package,subprocess32)) 

答えが死んで、コメント内のリンクであるしかしこのPython Error The _posixsubprocess module is not being usedについて同様の記事があります。私の問題のための任意のアイデア?

setup.py:

#!/usr/bin/python 

import os 
import sys 
from distutils.core import setup, Extension 


def main(): 
    if sys.version_info[0] != 2: 
     sys.stderr.write('This backport is for Python 2.x only.\n') 
     sys.exit(1) 

    ext = Extension('_posixsubprocess', ['_posixsubprocess.c'], 
        depends=['_posixsubprocess_helpers.c']) 
    if os.name == 'posix': 
     ext_modules = [ext] 
    else: 
     ext_modules = [] 

    setup(
     name='subprocess32', 
     version='3.2.7', 
     description='A backport of the subprocess module from Python 3.2/3.3 for use on 2.x.', 
     long_description=""" 
This is a backport of the subprocess standard library module from 
Python 3.2 & 3.3 for use on Python 2. 
It includes bugfixes and some new features. On POSIX systems it is 
guaranteed to be reliable when used in threaded applications. 
It includes timeout support from Python 3.3 but otherwise matches 
3.2's API. It has not been tested on Windows.""", 
     license='PSF license', 

     maintainer='Gregory P. Smith', 
     maintainer_email='[email protected]', 
     url='https://github.com/google/python-subprocess32', 

     ext_modules=ext_modules, 
     py_modules=['subprocess32'], 

     classifiers=[ 
      'Intended Audience :: Developers', 
      'Topic :: Software Development :: Libraries', 
      'Development Status :: 5 - Production/Stable', 
      'License :: OSI Approved :: Python Software Foundation License', 
      'Operating System :: POSIX', 
      'Operating System :: POSIX :: BSD', 
      'Operating System :: POSIX :: Linux', 
      'Operating System :: POSIX :: SunOS/Solaris', 
      'Programming Language :: Python :: 2.4', 
      'Programming Language :: Python :: 2.5', 
      'Programming Language :: Python :: 2.6', 
      'Programming Language :: Python :: 2.7', 
      'Programming Language :: Python :: 2 :: Only', 
      'Programming Language :: Python :: Implementation :: CPython', 
     ], 
    ) 


if __name__ == '__main__': 
    main() 

答えて

0

問題はdistutilsが共有オブジェクトを(他のオブジェクトが右のコンパイラを使用)を構築するために、間違ったコンパイラを使用していたということでした。構築フェーズでLDSHARED以下の変数を設定すると、この問題を解決:

LDSHARED="$(TARGET_CC) -pthread -shared" 
0

そして、私はあなたが使用しているどのBuildrootバージョンわからないんだけど、それはまだGENTARGETSマクロを使用しており、それがpython-packageインフラを持っていないバージョンだ場合本当に本当に古いバージョンでなければなりません。近年、Pythonのサポートで多くの修正がなされているので、まずアップグレードしてください。

+0

私もそれははい、それは古いですが、あるbuildrootのバージョンを知っているが、それは今のオプションではありませんアップグレードしません正直に言うと。問題がそれかsubprocess32かどうかはわかりません。その大きな変化は他の場所でも多くの問題が起こるだろうと私は思っています。 – Paul

関連する問題