草庐IT

Python:帮助(numpy)导致退出时出现段错误

coder 2023-08-21 原文

我遇到了一个奇怪的事情:在 python 解释器中,我做了以下事情:

>>>import numpy
>>>help(numpy)

帮助显示正确,但我一按 q 返回解释器:

Segmentation fault (core dumped)

我不知道是什么导致了段错误,如果我使用本地名称(典型的 np)导入 numpy,它仍然会发生。任何其他库都不会发生这种情况。我尝试卸载并重新安装 numpy,但这没有任何区别。 numpy 太大而无法以这种方式处理还是我的解释器有问题?我该如何解决这个问题?

我正在运行 Ubuntu 13.04 32 位并使用 Python 2.7.4。

更新: PYTHONSTARTUP 和 PYTHONPATH 都是空的。 编写执行此操作的脚本具有完全相同的效果。

此外,numpy 和其他库工作得很好,只是在 numpy 上使用时帮助调用会出错。

更新 2:

对于测试.py:

if __name__ == "__main__":
    import numpy
    help(numpy)

这是 gdb 输出:

$ gdb --args python test.py
GNU gdb (GDB) 7.5.91.20130417-cvs-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/python2.7...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/python2.7 test.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".

Program received signal SIGPIPE, Broken pipe.
0xb7fdd424 in __kernel_vsyscall ()
(gdb) where
#0  0xb7fdd424 in __kernel_vsyscall ()
#1  0xb7eb2cf3 in write () from /lib/i386-linux-gnu/libc.so.6
#2  0xb7e447e1 in _IO_file_write () from /lib/i386-linux-gnu/libc.so.6
#3  0xb7e446c6 in ?? () from /lib/i386-linux-gnu/libc.so.6
#4  0xb7e45422 in _IO_file_xsputn () from /lib/i386-linux-gnu/libc.so.6
#5  0xb7e3a025 in fwrite () from /lib/i386-linux-gnu/libc.so.6
#6  0x080ac05b in ?? ()
#7  0x080b6bde in PyEval_EvalFrameEx ()
#8  0x080b71c0 in PyEval_EvalFrameEx ()
#9  0x0811f939 in PyEval_EvalCodeEx ()
#10 0x080b80d4 in PyEval_EvalFrameEx ()
#11 0x080b71c0 in PyEval_EvalFrameEx ()
#12 0x0811f939 in PyEval_EvalCodeEx ()
#13 0x080b7265 in PyEval_EvalFrameEx ()
#14 0x080b71c0 in PyEval_EvalFrameEx ()
#15 0x0811f939 in PyEval_EvalCodeEx ()
#16 0x081203ee in ?? ()
#17 0x080e11f9 in ?? ()
#18 0x080e3daf in PyObject_Call ()
#19 0x08129483 in ?? ()
#20 0x080b8a3e in PyEval_EvalFrameEx ()
#21 0x0811f939 in PyEval_EvalCodeEx ()
#22 0x0812029e in ?? ()
---Type <return> to continue, or q <return> to quit---
#23 0x080e11f9 in ?? ()
#24 0x080e3daf in PyObject_Call ()
#25 0x0816dd88 in ?? ()
#26 0x080b7615 in PyEval_EvalFrameEx ()
#27 0x0811f939 in PyEval_EvalCodeEx ()
#28 0x081836c7 in PyEval_EvalCode ()
#29 0x08183b7d in ?? ()
#30 0x080a6032 in PyRun_FileExFlags ()
#31 0x080a65f8 in PyRun_SimpleFileExFlags ()
#32 0x080a74af in Py_Main ()
#33 0x080a7581 in main ()
(gdb) 

更新 3:

$strace -f python test.py 的输出很长,这里是克隆子进程的最后几行:

[pid  2610] clone(Process 2611 attached child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7527968) = 2611
[pid  2610] wait4(-1, Process 2610 suspended
<unfinished ...>
[pid  2611] execve("/usr/bin/less", ["less"], [/* 53 vars */]) = 0
[pid  2611] brk(0)                      = 0x89ed000
[pid  2611] access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
[pid  2611] mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7734000
[pid  2611] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[pid  2611] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
[pid  2611] fstat64(3, {st_mode=S_IFREG|0644, st_size=93821, ...}) = 0
[pid  2611] mmap2(NULL, 93821, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb771d000
[pid  2611] close(3)                    = 0
[pid  2611] access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
[pid  2611] open("/lib/i386-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
[pid  2611] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320W\0\0004\0\0\0"..., 512) = 512
[pid  2611] fstat64(3, {st_mode=S_IFREG|0644, st_size=121032, ...}) = 0
[pid  2611] mmap2(NULL, 124748, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76fe000
[pid  2611] mmap2(0xb771a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b) = 0xb771a000
[pid  2611] close(3)                    = 0
[pid  2611] access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
[pid  2611] open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
[pid  2611] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\232\1\0004\0\0\0"..., 512) = 512
[pid  2611] fstat64(3, {st_mode=S_IFREG|0755, st_size=1770984, ...}) = 0
[pid  2611] mmap2(NULL, 1780508, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb754b000
[pid  2611] mmap2(0xb76f8000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ad) = 0xb76f8000
[pid  2611] mmap2(0xb76fb000, 11036, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76fb000
[pid  2611] close(3)                    = 0
[pid  2611] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb754a000
[pid  2611] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7549000
[pid  2611] set_thread_area({entry_number:-1 -> 6, base_addr:0xb75496c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
[pid  2611] mprotect(0xb76f8000, 8192, PROT_READ) = 0
[pid  2611] mprotect(0xb771a000, 8192, PROT_READ) = 0
[pid  2611] mprotect(0x8069000, 4096, PROT_READ) = 0
[pid  2611] mprotect(0xb7757000, 4096, PROT_READ) = 0
[pid  2611] munmap(0xb771d000, 93821)   = 0
[pid  2611] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] brk(0)                      = 0x89ed000
[pid  2611] brk(0x8a0e000)              = 0x8a0e000
[pid  2611] stat64("/home/marzul/.terminfo", 0xbfac7780) = -1 ENOENT (No such file or directory)
[pid  2611] stat64("/etc/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid  2611] access("/etc/terminfo/x/xterm", R_OK) = -1 ENOENT (No such file or directory)
[pid  2611] stat64("/lib/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid  2611] access("/lib/terminfo/x/xterm", R_OK) = 0
[pid  2611] open("/lib/terminfo/x/xterm", O_RDONLY|O_LARGEFILE) = 3
[pid  2611] fstat64(3, {st_mode=S_IFREG|0644, st_size=3315, ...}) = 0
[pid  2611] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7733000
[pid  2611] read(3, "\32\1)\0&\0\17\0\235\1Z\5xterm|xterm-debian|X"..., 4096) = 3315
[pid  2611] read(3, "", 4096)           = 0
[pid  2611] close(3)                    = 0
[pid  2611] munmap(0xb7733000, 4096)    = 0
[pid  2611] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] ioctl(1, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
[pid  2611] ioctl(2, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
[pid  2611] open("/usr/bin/.sysless", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid  2611] open("/etc/sysless", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid  2611] open("/home/marzul/.less", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid  2611] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
[pid  2611] fstat64(3, {st_mode=S_IFREG|0644, st_size=8748544, ...}) = 0
[pid  2611] mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7349000
[pid  2611] mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x5e1) = 0xb7733000
[pid  2611] close(3)                    = 0
[pid  2611] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
[pid  2611] fstat64(3, {st_mode=S_IFREG|0644, st_size=8748544, ...}) = 0
[pid  2611] mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x5d8) = 0xb7732000
[pid  2611] close(3)                    = 0
[pid  2611] open("/home/marzul/.lesshst", O_RDONLY|O_LARGEFILE) = 3
[pid  2611] fstat64(3, {st_mode=S_IFREG|0600, st_size=129, ...}) = 0
[pid  2611] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =     0xb7731000
[pid  2611] read(3, ".less-history-file:\n.search\n\"pus"..., 4096) = 129
[pid  2611] read(3, "", 4096)           = 0
[pid  2611] close(3)                    = 0
[pid  2611] munmap(0xb7731000, 4096)    = 0
[pid  2611] open("/dev/tty", O_RDONLY|O_LARGEFILE) = 3
[pid  2611] ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] fsync(3)                    = -1 EINVAL (Invalid argument)
[pid  2611] ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = 0
[pid  2611] ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
[pid  2611] rt_sigaction(SIGINT, {0x805cc00, [INT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
[pid  2611] rt_sigaction(SIGTSTP, {0x805cb80, [TSTP], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
[pid  2611] rt_sigaction(SIGWINCH, {0x805cbc0, [WINCH], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
[pid  2611] rt_sigaction(SIGQUIT, {SIG_IGN, [QUIT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
[pid  2611] ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfac9088) = -1 ENOTTY (Inappropriate ioctl for device)
[pid  2611] stat64("-", 0xbfac90a0)     = -1 ENOENT (No such file or directory)
[pid  2611] write(1, "\33[?1049h\33[?1h\33=\r", 16) = 19
[pid  2611] fsync(3)                    = -1 EINVAL (Invalid argument)
[pid  2611] ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
[pid  2611] ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid  2611] exit_group(0)               = ?
Process 2610 resumed
Process 2611 detached
[pid  2610] <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2611
[pid  2610] --- SIGCHLD (Child exited) @ 0 (0) ---
[pid  2610] sigreturn()                 = ? (mask now [])
[pid  2610] exit_group(0)               = ?
Process 2610 detached
<... write resumed> )                   = 73728
--- SIGPIPE (Broken pipe) @ 0 (0) ---
--- SIGCHLD (Child exited) @ 0 (0) ---
write(4, "l the attributes of the ndarray "..., 3043328) = -1 EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)

更新 4:

$echo $LESS

$cat cat ~/.less
cat: /home/user/.less: No such file or directory

显然 less 根本没有配置。

在终端中搜索没有被 strace 截断的 "= 4"给出了以下片段:

read(3, "---------\n    a, b : ndarray\n\n  "..., 4096) = 4096
read(3, "epstr = \", \"\n    arglist = argum"..., 4096) = 4096
read(3, "* Total of %d references found. "..., 4096) = 4096
read(3, "`output` not supplied then sourc"..., 4096) = 4096
read(3, "      r += sum([200 for w in wha"..., 4096) = 4096
read(3, "                  except NameErr"..., 4096) = 4096
read(3, "          return tuple([self.vis"..., 4096) = 4018

[pid  3294] write(2, "Missing filename (\"less --help\" "..., 42) = 42

更新 5:

$strace -f python test.py 2>&1 | tee -a out.txt ; (exit ${PIPESTATUS})
$cat out.txt | grep "open(.*) = 4"

open("/usr/lib/python2.7/site.pyc", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/os.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/traceback.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/sysconfig.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/re.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/_sysconfigdata.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/local/lib/python2.7/dist-packages/easy-install.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/PILcompat.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/gtk-2.0-pysupport-compat.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/pygtk.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/python-support.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/setuptools.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/ubuntu-sso-client.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/ubuntuone-client.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/ubuntuone-control-panel.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/wx.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/zope.interface-4.0.5-nspkg.pth", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/sitecustomize.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/encodings/__init__.pyc", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/codecs.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/encodings/aliases.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/encodings/utf_8.pyc", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/__init__.pyc", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/__config__.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/version.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/_import_tools.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/fft/__init__.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/polynomial/__init__.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/random/__init__.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/ctypeslib.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/dist-packages/numpy/ma/__init__.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/inspect.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/pkgutil.py", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/python2.7/repr.py", O_RDONLY|O_LARGEFILE) = 4

更新 6:

没有 open(...) 我还发现:

ERR_PRINT = 4
FPE_UNDERFLOW = 4

最佳答案

从 Python 方面,我设法找到了 pydoc.py 中的这个函数。 ...

def pipepager(text, cmd):
    """Page through text by feeding it to another program."""
    pipe = os.popen(cmd, 'w')
    try:
        pipe.write(text)
        pipe.close()
    except IOError:
        pass # Ignore broken pipes caused by quitting the pager program.

...特别是 pipe.write(text) 行。

如果将该函数更改为...,问题就会消失

def pipepager(text, cmd):
    """Page through text by feeding it to another program."""
    import subprocess
    pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True).stdin
    try:
        pipe.write(text)
        pipe.close()
    except IOError:
        pass # Ignore broken pipes caused by quitting the pager program.

...这可能是一个合理的解决方法,尽管我仍在调查为什么这可以解决问题 - 这两种情况的 strace(1) 输出之间几乎没有区别。


更新

Leeward 已提交 a bug report为此。

关于Python:帮助(numpy)导致退出时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17344974/

有关Python:帮助(numpy)导致退出时出现段错误的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  5. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  6. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  7. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  8. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  9. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  10. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

随机推荐