2013-02-27 3 views
0

전체 플라스크/heroku/github 비즈니스에서 꽤 초보하지만 몇 년 동안 Python을 사용해 왔으며 거북이 SVN에 대한 경험이있었습니다. 나는이 링크 https://devcenter.heroku.com/articles/python에서 heroku로 코드를 푸는 방법에 대한 튜토리얼을 따라 왔고, 많은 웹 사이트를 업로드 할 수 있었다. 그러나 나는 확실히 뭔가를 놓쳤다.Flask, Heroku 및 Github 종속성/파일 구조

현재 프로젝트에서 나는이는 다음 종류의 코드에 의해 주요 응용 프로그램으로 가져, (예를 들어, 웹 서비스 호출 및 데이터베이스 처리를위한) 다른 프로세스를 구성하는 파일 구조를 가지고 :

## Webservices 
dirname, filename = os.path.split(os.path.abspath(__file__)) 
WSdirname = dirname + '\\WebServices\\' 
sys.path.append(WSdirname) 

import WebservicesModule as WSmodule # Module resides in "WebSerivices" folder 

어떤 파일이 다음 구조와 같은 구조에 저장된다는 것을 의미합니다.

AppFolder\ 
    app.py 
    WebServices\ 
     WebservicesModules.py 
     ... 
    Database\ 
     DatabaseModules.py 
     ... 

로컬로 작동합니다. 그러나 일단 git에 의해 heroku로 푸시 당하면 코드가 WebservicesModule 모듈에 액세스 할 수없는 것으로 보입니다. 양식에 오류가 있습니다.

Import error: no module named WebservicesModule.

왜 내가이 파일 구조를 가지고 있는지 설명합니다. 많은 수의 웹 서비스가 필요할 것이므로 동일한 폴더 내에 포함시키는 것이 더 쉽습니다. 데이터베이스 작업 등에 대해서도 마찬가지입니다.

내 질문은 여기 있습니다. 내 코드가 나쁜 습관인가, 영웅이 그것을 허용하지 않는다는 의미인가? 또는 git hub가 내 파일을 heroku에 업로드하지 않았으므로 마스터 디렉토리의 파일 구조에도 불구하고 찾을 수 없습니다. 또는 내가 모르는 몇 가지 문제가 있습니까? 이 모듈을 requirements.txt의 의존성으로 선언해야합니까? 코드에서도 그렇습니다.

당신이 제공 할 수있는 도움에 대한 환호 :)!

답변

1

문제는 로컬에서 Windows에서 개발 중이며 Heroku의 슬러그는 Linux의 변형을 사용한다는 것입니다. \은 Windows의 디렉토리 구분 기호이지만 /은 Linux의 디렉토리 구분 기호입니다.

WSdirname = os.path.join(dirname, "WebServices") 

상관없이 무엇 플랫폼은 당신이 올바른 디렉토리 분리 사용에 배포 없는지 확인합니다

보다는

경로 및 하위 디렉토리에 가입 \WebServices\ 사용 os.path.join을 하드 코딩.

+0

오 남자 신인 오류, 환호! –

관련 문제