2017-09-05 166 views
1

在Heroku中部署並添加自定義構建包(如libspatialindex)時,Python 3.5現在會查找Tkinter。Heroku Python3.5導入錯誤:No module named ='_ tkinter'

在本地,通過安裝使用sudo apt-get tk-dev這將解決並嘗試從這個類似的問題的建議:import matplotlib failing on Heroku,錯誤仍然存​​在。

這裏是我的buildpacks:

https://github.com/heroku/heroku-buildpack-apt 
heroku/python 
https://github.com/julienfr112/libspatialindex-buildpack.git 

而且只包含我Aptfile:

python3-tk 
libpq-dev 
build-essential 
libncursesw5-dev 
libreadline5-dev 
libssl-dev 
libgdbm-dev 
libc6-dev 
libsqlite3-dev tk-dev 
libbz2-dev 

在Heroku上推,這裏的日誌尾部:

2017-09-05T08:25:58.903075+00:00 app[web.1]: File "/app/.heroku 
/python/lib/python3.5/site-packages/six.py", line 82, in _import_module 
2017-09-05T08:25:58.903076+00:00 app[web.1]:  __import__(name) 
2017-09-05T08:25:58.903076+00:00 app[web.1]: File "/app/.heroku 
/python/lib/python3.5/tkinter/__init__.py", line 35, in <module> 
2017-09-05T08:25:58.903076+00:00 app[web.1]:  import _tkinter 
# If this fails your Python may not be configured for Tk 
2017-09-05T08:25:58.903077+00:00 app[web.1]: ImportError: No module 
named '_tkinter' 

任何想法?

+0

當你推到Heroku你看到任何看起來像生成輸出中的「apt」活動? – Chris

+0

@Chris yes日誌似乎運行並安裝aptfile中包含的文件。 – Reiion

+0

從您接受的問題中接受的答案中鏈接到:「不幸的是,這個Aptfile沒有相同的依賴關係解決方案,所以您將不得不手動指定任何其他包。」你是否也安裝了Tk本身?我不確定可能存在其他依賴關係... – Chris

回答

1

將matplotlib後端從tkinter更改爲其他內容。在節目的一開始就這樣做:

import matplotlib 
matplotlib.use('Agg') 

通過這種方式,程序的其餘部分將使用您設置(「AGG的」,「SVG」,等等,等等)

另一種選擇後端將嘗試和混亂的matplotlibrc文件每個:https://matplotlib.org/users/customizing.html#the-matplotlibrc-file