2015-05-28 5 views
12

Próbuję użyć Travis CI w bibliotece C, która używa niestandardowych skryptów budujących opartych na python3.Jak używać python 3 jako skryptu budowania w konfiguracji niepotestowej Travis?

Po utworzeniu repozytorium kończy się niepowodzeniem na ./configure, ponieważ configure używa Pythona 3, który nie jest domyślnie instalowany.

Gdybym budowania projektu Pythona, chciałbym użyć w moim .travis.yml:

python: 
    - "3.4" 

to jednak nie wydaje się wpływać na moim repozytorium, ponieważ jest w C (próbowałem i działa which python3python --version, który poinformował, że Python 3 nie istniał i Python 2.7 był używany zamiast)

skrypt build, że próbowałem.

language: c 

python: 
    - "3.4" 

Jak mogę mieć Python 3 dostępny w Travis CI, gdy mój projekt nie jest projektem Python?

+0

Próbowałaś konsultacji z „systemu budowania informacji” dziennika budowy zgodnie z zaleceniami [docs] (http: // docs. travis-ci.com/user/languages/python/)? – skeggse

+1

@skeggse W tej sekcji nie ma nic o Pythonie, prawdopodobnie dlatego, że jest to projekt C, a nie projekt Pythona. –

+0

Mam ten sam problem. Zdarzenie sposób 'before_install' nie działa dla mnie. Czy znalazłeś jakiś inny sposób, aby później ustawić domyślną wersję Pythona? –

Odpowiedz

5

Powinieneś być w stanie po prostu zainstalować potrzebne pakiety python3 dodając before_install: odcinek swojej .travis.yml:

before_install: 
- sudo apt-get update 
- sudo apt-get install python3 
+0

Dlaczego 'before_install' zamiast' install'? –

+0

Nie jestem do końca pewien, dlaczego nie można użyć 'install', ale dokumenty Travis sugerują instalację pakietów ubuntu podczas' before_install': http://docs.travis-ci.com/user/installing-dependencies/#Installing-Ubuntu Pakiety –

+0

Dzięki! To działa. Skończyło się na tym, że włączyłem 'sudo: true', ponieważ wymyśliłem część tego przed twoją odpowiedzią, ale nie jestem pewien, czy było to wymagane, aby to działało. –

12

Jeśli chcesz korzystać z infrastruktury opartej pojemnika można skorzystać z apt addon:

addons: 
    apt: 
    sources: 
     - deadsnakes # source required so it finds the package definition below 
    packages: 
     - python3.5 

Pakiety, które mogą być stosowane są listed here

Aktualizacja

Aby korzystać z zależnościami z C-rozszerzeniami takimi jak psycopg2 lub pyYAML to jest również konieczne, aby dodać python3.4-dev

+2

To świetnie, ale jak z tego korzystać? Nie wydaje się być dodane do ścieżki (wywołanie python3 nie działa, nie python3.5) – mvd

+0

To dziwne, instalujemy python3.4 i wywołanie go działa dobrze. Tutaj yml: https://github.com/crate/crate/blob/0.56/.travis.yml#L49 Tutaj użycie: https://github.com/crate/crate/blob/0.56/blackbox/ bootstrap.sh # L5 – mfussenegger

+0

To wspaniałe rozwiązanie dzięki. – Natim

2

Odpowiedź mfussenegger jest zalecanym sposobem zainstalowania rzeczy w dzisiejszych czasach, jednak deadsnakes pakiety nie robić podaj linki do python3, jak się wydaje, tylko dla python3.*. Można go użyć, jeśli potrzebujesz najnowszej wersji Pythona 3. Bieżący travis jest oparty na systemie Ubuntu LTS 12.04, który jest dostarczany z pythonem 3.2, który wystarcza dla większości skryptów.

python 3.* to problem podczas uruchamiania skryptu z shebangiem, w którym nie możemy uwzględnić arbitralnych sprawdzeń nazwy. Dlatego prawdopodobnie nadal chcesz pakiet python3, jak w Eric Appelts odpowiedź:

addons: 
    apt: 
    packages: 
     - python3 
Powiązane problemy