删除matplotlib对numpy的依赖(并使用Apple的应用程序加载器)

时间:2015-10-21 18:35:07

标签: python macos numpy matplotlib application-loader

我正在尝试将应用上传到Mac应用商店。我使用py2app创建了一个应用程序包,代码签署了框架和可执行文件,使用<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{THE_REQUEST} \ /+members?profile_type=4&displayname=&location=&within=50&lat=0&long=0&order=az&show=&1_4_9_alias_gender=&1_4_10_alias_birthdate%5Bmin%5D=&1_4_10_alias_birthdate%5Bmax%5D=&1_1_5_alias_gender=&1_1_6_alias_birthdate%5Bmin%5D= RewriteRule ^ /acompanhantes [L,R] # Ignore sitemap folder (passthrough these requests) RewriteRule ^myapps/ - [L] # Get rid of index.php RewriteCond %{REQUEST_URI} /index\.php RewriteRule (.*) index.php?rewrite=2 [L,QSA] # Rewrite all directory-looking urls RewriteCond %{REQUEST_URI} /$ RewriteRule (.*) index.php?rewrite=1 [L,QSA] # Try to route missing files RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} public\/ [OR] RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$ RewriteRule . - [L] # If the file doesn't exist, rewrite to index RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA] </IfModule> 创建了一个.pkg并对其进行了签名。在使用应用程序加载器之前,一切似乎都很好这是我收到的错误消息:

productbuild

经过多次反复试验,我将可能存在的问题缩小到一个模块。我的应用程序使用matplotlib来创建图形。因为我使用matplotlib,所以我必须包含numpy模块(它是一个依赖项)。只有当numpy包含在应用程序中时,我才会收到上述错误。一旦我从Package Summary: 1 package(s) were not uploaded because they had problems: /var/folders/0n/tcm_mnqx7xz7x4z87_96y88r0000gn/T/2202BA63-472B-4357-9F4C-4127EA0E2E25/1050509510.itmsp - Error Messages: ERROR ITMS-90135: "The executable could not be re-signed for submission to the App Store. The app may have been built or signed with non-compliant or pre-release tools." 删除它的文件夹,错误就会消失,应用程序开始上传。但是,因为现在删除了numpy,我的应用程序不再有效。

我的问题

  1. 我可以删除matplotlib对numpy的依赖关系,这样我就可以完全删除numpy了吗?或者是否有一个不需要numpy的matplotlib版本?
  2. 有没有办法在包中保留numpy并仍然使用应用程序加载器?
  3. 我尝试过欺骗matplotlib,认为numpy仍然存在,只需添加“空”文件(例如:将numpy中的appName/Contents/Resources/lib/python3.4/numpy设为空文档),但没有成功。

    以下是我为matplotlib导入的模块列表:

    __init__.py

    我正在使用:

    Python 3.4, OSX 10.10.5, Application Loader 3.2(也尝试过3.0)

1 个答案:

答案 0 :(得分:0)

我设法用Apple的应用程序加载器解决了这个问题。正如我对原始问题的一些回答中所提到的,numpy与matplotlib的集成过于深入。没有简单的方法来重写,替换或删除numpy。要解决来自应用程序加载器的错误消息,您需要从numpy中删除一个特定文件。相关文件为libnpymath.a,可在文件夹appName/Contents/Resources/lib/python3.4/numpy/core/lib中找到。一旦删除它,应用程序加载器就不再对你尖叫(至少对于那个特定的问题)。

我的应用程序似乎在没有删除文件的情况下工作得很好。