2017-12-08 5 views
-1

나는 오픈 소스 프로젝트 (GridCal)를 가지고 있으며 사용자에게 유닉스 시스템의 경우 pip install GridCal 또는 pip3 install GridCal과 함께 패키지를 설치하라고합니다.종속성 설치에 실패한 Pip

설치 파일이 있습니다 :

때부터 나는 사용자 보고서는 프로그램이 모듈을 누락되었음을 말하는 얻을 시간
from distutils.core import setup 
import sys 
import os 
import platform 
from GridCal.grid.CalculationEngine import __GridCal_VERSION__ 

name = "GridCal" 
version = str(__GridCal_VERSION__) 
description = "Research Oriented electrical simulation software." 

# Python 3.5 or later needed 
if sys.version_info < (3, 5, 0, 'final', 0): 
    raise (SystemExit, 'Python 3.5 or later is required!') 

# Build a list of all project modules 
packages = [] 
for dir_name, dir_names, file_names in os.walk(name): 
     if '__init__.py' in file_names: 
      packages.append(dir_name.replace('/', '.')) 

package_dir = {name: name} 

# Data_files (e.g. doc) needs (directory, files-in-this-directory) tuples 
data_files = [] 
for dir_name, dir_names, file_names in os.walk('doc'): 
     files_list = [] 
     for filename in file_names: 
      fullname = os.path.join(dir_name, filename) 
      files_list.append(fullname) 
     data_files.append(('share/' + name + '/' + dir_name, files_list)) 

if platform.system() == 'Windows': 
    # list the packages (On windows anaconda is assumed) 
    required_packages = ["numpy", 
         "scipy", 
         "networkx", 
         "pandas", 
         "xlwt", 
         "xlrd", 
         # "PyQt5", 
         "matplotlib", 
         "qtconsole", 
         "pysot", 
         "openpyxl", 
         "pulp" 
         ] 
else: 
    # make the desktop entry 
    make_linux_desktop_file(version_=version, comment=description) 

    # list the packages 
    required_packages = ["numpy", 
         "scipy", 
         "networkx", 
         "pandas", 
         "xlwt", 
         "xlrd", 
         "PyQt5", 
         "matplotlib", 
         "qtconsole", 
         "pysot", 
         "openpyxl", 
         "pulp" 
         ] 

# Read the license 
with open('LICENSE.txt', 'r') as f: 
    license_text = f.read() 

setup(
    # Application name: 
    name=name, 

    # Version number (initial): 
    version=version, 

    # Application author details: 
    author="Santiago Peñate Vera", 
    author_email="[email protected]", 

    # Packages 
    packages=packages, 

    data_files=data_files, 

    # Include additional files into the package 
    include_package_data=True, 

    # Details 
    url="http://pypi.python.org/pypi/GridCal/", 

    # License file 
    license=license_text, 

    # description 
    description=description, 

    # long_description=open("README.txt").read(), 

    # Dependent packages (distributions) 
    install_requires=required_packages, 

    setup_requires=required_packages 
) 

: https://github.com/SanPen/GridCal/issues/12

내가 모두 install_requiressetup_requires에서 패키지 목록을 지정한 .

이 오류가 발생합니까 아니면 다른 조치를 취해야합니까?

+0

의존성 목록에'pyDOE'가 표시되지 않습니다. 설치 방법은 무엇입니까? 나열된 종속성의 의존성입니까? – phd

+0

나는'install_requires'와'setup_requires'가 동시에 필요하다고 생각하지 않습니다. https://pip.pypa.io/en/stable/user_guide/?highlight=setup_requires#installation-bundles : * 마지막으로 setup.py의 setup_requires 키워드 arg를주의하십시오. 그것들을 사용하는 (희귀 한) 패키지는 그 의존성이 setuptools에 의해 직접 다운로드되어 pip의 보호를 건너 뛰게합니다. * – phd

+0

pyDOE는 pySOT와 함께 설치되며, BTW는 리눅스에서 완벽하게 작동합니다. 그러므로 질문. –

답변

0

setup.py 수입품은 거의 모든 종속성을 가져옵니다. GridCal.grid.CalculationEngine. 나는. setup.py 수입품은 입니다. 설치하기 전에.

봅니다에서 분리 비어있는 새 가상 ENV에 설치하는 글로벌 site-packages - 확실히 작동하지 않습니다 :

$ virtualenv --no-site-packages --python python3.4 test-gcal 
Running virtualenv with interpreter /usr/bin/python3.4 
Using base prefix '/usr' 
New python executable in /home/phd/tmp/test-gcal/bin/python3.4 
Also creating executable in /home/phd/tmp/test-gcal/bin/python 
Installing setuptools, pip, wheel...done. 

$ source test-gcal/bin/activate 

$ pip install GridCal 
Collecting GridCal 
    Using cached GridCal-1.85.tar.gz 
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last): 
     File "<string>", line 1, in <module> 
     File "/tmp/pip-build-c7q9pbep/GridCal/setup.py", line 5, in <module> 
     from GridCal.grid.CalculationEngine import __GridCal_VERSION__ 
     File "/tmp/pip-build-c7q9pbep/GridCal/GridCal/grid/CalculationEngine.py", line 18, in <module> 
     from GridCal.grid.JacobianBased import IwamotoNR, Jacobian, LevenbergMarquardtPF 
     File "/tmp/pip-build-c7q9pbep/GridCal/GridCal/grid/JacobianBased.py", line 19, in <module> 
     from numpy import array, angle, exp, linalg, r_, Inf, conj, diag, asmatrix, asarray, zeros_like, zeros, complex128, \ 
    ImportError: No module named 'numpy' 

    ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-c7q9pbep/GridCal/ 

을 수정은 비교적 간단합니다 : 당신이 별도로 GridCal/Engine/CalculationEngine.py에서 __GridCal_VERSION__를 이동해야 GridCal/version.py (또는 __version__.py 또는 이와 비슷한 내용)에 from GridCal.version import __GridCal_VERSION__을 입력하십시오.

수입은 GridCal/__init__.py이 비어 있거나 기본/표준 모듈 만 가져 오는 경우에만 작동합니다. 해당 __init__.py이 (아직 설치되지 않은) 종속성을 직접 또는 간접적으로 가져 오는 경우 version.py을 가져올 수 없습니다. setup.py에서이를 극복 할 수있는 방법이 있지만 지금은 건너 뜁니다. 혹시라도 해결책이 필요하다면 다시 물어보십시오.